60年前からの和文プログラミング論文を掘り起こした話
日本の人々が「プログラミング」にかかわるようになったのは、いつごろでしょうか?
その前に、まずは世界のコンピュータとプログラミングの歴史を簡単に振り返ってみましょう。まずは OS から有名どころをたどると、
- わかりやすく Windows 95 が 1995 年 [1]
- その前に広く使われた Windows 3.1 は 1992 年 [2]
- その下で動く MS-DOS は、バージョン 6 が 1993 年、バージョン 1 が 1981 年 [3]
- Linus Torvalds が Linux の開発を始めたのが 1991 年 [4]
- その「契機となった」 Andrew Tanenbaum の MINIX が 1987 年 [5]
- さらに遡ればオリジナルの BSD (Berkeley Software Distribution) が 1977 年 [6]
- それらの礎であった Unix (と Space Travel (ゲーム)) の開発が 1969 年 [7] [8]
- その前身であった Multics プロジェクトが始まったのが 1964 年 [9]
といったところでしょうか。プログラミング言語の有名どころで言えば、
- Sun Microsystems が Java の α 版を出したのが 1995 年、正式版の 1.0 が 1996 年 [10]
- Brendan Eich が JavaScript の原型となる LiveScript を開発したのが 1995 年 [11]
- まつもとゆきひろさんが Ruby の開発を始めたのが 1993 年、発表したのが 1995 年 [12]
- Guido van Rossum が Python 0.90 を公開したのが 1991 年 [13]
- Perl の最初のバージョン 1.0 が 1987 年 [14]
- SQL という名前が付けられたのが 1970 年代 [15]
- 上記の Unix と対で語られる C 言語の開発が 1972 年 [16]
- 最初に動作したバージョンの Smalltalk も 1972 年 [17]
- 最初の BASIC が開発されたのが 1964 年 [18]
- CODASYL が COBOL を開発したのが 1959 年 [19]
- LISP の開発が始まったのが 1958 年、論文が発表されたのが 1960 年 [20]
- John Backus が FORTRAN の最初の最初のバージョンを考案したのが 1954 年 [21]
みたいな時間軸を見ることができます。 (歴史の話なので近年のものは最初から除いています)
プログラミング黎明期とプロシン
この最初期にあたる 1950 年代にはすでにプログラミングに触れていた人が、日本にももちろんいました。ですが、目的である科学技術計算や事務計算のための単なる「作業」ととらえられがちで、「プログラミングという行為」そのものに特に注目することは多くなかったようです。
そんな中で 1960 年 1 月に第 1 回がおこなわれたのが、「プログラミング・シンポジウム」 (通称プロシン) です。 [22] 日本で「プログラミングそのものを興味の対象としたイベント」は、これがおそらく最初のものだったと思われます。 [23]
プロシンは今でも続いていて、年明けの 2025 年には第 66 回を数えます。現在のプロシンについては、以下の記事などをご覧ください。 (第 66 回の論文・発表も絶賛募集中です!)
過去のプロシン論文集
さてこのプロシン、いちおう学会系のイベントなので、第 1 回から毎回いわゆる「論文集 (報告集・予稿集)」が出版されています。しかし当時のシンポジウムに参加していなかった人には、これまで第 46 回 (2006 年) 以前の論文集にアクセスする方法がありませんでした。主にシンポジウムの参加者に配布された論文集 (物理冊子) しか、実質的に存在しなかったんですね。
情報処理学会として開かれていた会議の論文や会誌「情報処理」の記事などは、スキャンしたものが最初期のものから「情報学広場」 (情報処理学会の電子図書館) に掲載されています。 [24] しかしプロシンの論文は、長い間、第 47 回以降のものしか掲載がありませんでした。 [25]
関係者には、「おもしろい議論がされている論文も多いのに読めないのはもったいない」という気持ち、そして「せっかく書いた論文へのアクセスがかぎられることは著者にとっても本懐ではないはずだ」という思いがありました。そこで 2020 年、千葉大学の辻尚史先生に音頭を取っていただき、過去のプログラミング・シンポジウム論文集の内容を情報処理学会の情報学広場に掲載する活動が始まりました。 [26]
そこから掲載までの実作業にさらなる年月を要してしまったのですが、論文集の冊子をお持ちだった先生方からスキャンを提供いただき、さらに多くの方々のご協力を得て論文タイトル・著者の確認や PDF の分割などをおこない、第 46 回以前のプロシンの論文集もすべて情報学広場に掲載するめどがようやく立ちました。 [27]
本記事は、せっかく公開される論文集が多くの方の目に留まってほしいと、宣伝のために書いているものです。 [28]
学会系のイベントだからといって決してカタすぎることのない、ただただ「プログラミングが好きな」人たちが自由闊達にいろいろな (好き勝手な) 議論を楽しんでいる様子が目に浮かぶような、当時の息吹を感じられる記録になっていると思います。ぜひアクセスしてみてください!
ピックアップ
…と、概要だけ紹介して終わりにしてもいいのですが、これだけで興味を持ってもらえる人は、あまり多くないかもしれません。
ということで、ここからは、本記事の筆者が「おもしろい!」と思った論文を、あくまで筆者の独断と偏見で (ひとまず第 1 回 (1960) 〜第 20 回 (1979) のなかから) ピックアップして紹介してみたいと思います。 [29] 筆者の趣味が多分に反映されることはお許しください。 (カッコ () 内はシンポジウムの回数と開催年)
東京オリンピツク
「東京オリンピツク」の話なんかが出てきたりもしています。つい数年前にあった東京 2020 じゃないですよ。その前の 1964 年の東京オリンピツクです。
- 東京オリンピツクに使われたリアルタイム・システムについて (6; 1967)
数値計算・行列計算など
特に第 1 回から第 3 回あたりのリストを眺めてみると、「計算」の話題がよく出てきます。特に当時の大学や研究機関では、コンピュータが主に使われていたのは物理のシミュレーション計算であったり行列計算であったり、というのがよくわかります。
- 関数の関数をn回微分するためのサブルーチンとエルミット多項式Hk(x)のサブルーチン (1; 1960)
- エラトステネスのふるいによる素数の計算について (1; 1960)
- 行列計算の自動プログラミング (1; 1960)
- 浮動小数点計算における絶対値最小の非零数について (2; 1961)
- モンテカルロ法による多重積分の計算 (3; 1962)
プログラミング言語・コンパイラ
やはりプログラミング言語やコンパイラの話題は多いですね。
ALGOL
当時まだ新しい ALGOL の文法の紹介なんて話も出てきたりします。 (注: 1960 年代当時、まだ C 言語すら存在していません!)
- ALGOLの文法 (1; 1960)
- 算法言語ALGOL 60の報告 (2; 1961)
- ALGOL 60のCompiler (3; 1962)
Self
Self っていう名前がついたコンパイラや言語の話がたまに出てくるんですが、有名な Smalltalk の影響を受けた Self 言語 [30] のことではなかったりします。 (互いに関係もありません)
- Self-Compiler (4; 1963)
- 増殖型言語SELFについて (12; 1972)
PL/I
FORTRAN
- シミュレーション用言語について (5; 1964)
- 数式解析のプログラムをFORTRANで書いた話 (9; 1968)
- ALGOL-FORTRAN様のプログラムの妥当性の判定について (9; 1968)
日本語プログラミング
- 日本語の語順と逆ポーランド記法 (7; 1966)
- 日本語によるCOBOL (8; 1967)
- 記号処理のためのヤマト語 (10; 1969)
プログラミング言語全般
"Problem Oriented Language" という言葉が出てくるんですが、これはいわゆる、今で言う「高級言語」のことを指しているのかな。
- 最近のProblem Oriented Languageについて (2; 1961)
複数のプログラミング言語を俯瞰したような議論もしばしばあります。
- プログラミング言語の動向と標準化 (11; 1970)
- 工業用計算機言語の開発と標準化の動向 (13; 1972)
自動プログラミング
「自動プログラミング」という言葉もちょくちょく出てきます。以前の「自動プログラミング」は「コンパイル・コンパイラ」と近い認識で解釈されたりもするのですが、もう少し「機械に近い」ところをゴリゴリやっていたような雰囲気が垣間見えたりします。
- 論理設計と自動プログラミング (3; 1962)
コンパイラとコンパイラ・コンパイラ
- PROGRAM GENERATOR "PREMAP" (5; 1964)
- Compiler Generating System (6; 1965)
- 計算機を用いたコンパイラ作成自動化の実験 (7; 1966)
- Compiler Generatorへの入力データ (12; 1971)
- コンパイラ記述言語の一つの試み (12; 1971)
- 順位文法によるプログラミング言語の解析とコンパイラの構成 (14; 1973)
- 文脈自由言語の誤り訂正時間 (14; 1973)
- PASCALコンパイラのportabilityについて (16; 1975)
- 字句解析部の高速化について-ソフトウェアの調整技法- (20; 1979)
リスト処理
「リスト処理」と言えば LISP をはじめとして、やはり一つの潮流であったようです。
- 木表現とリスト処理の算法 (7; 1966)
- シンタックス・チェッカーとストレッジ・アロケータにおけるリスト・プロセッシング (7; 1966)
- リスト処理言語L6について (10; 1969)
- ページ・メモリーをもったリスト処理言語FLIP-III (10; 1969)
- LISPのデータ構造についての2, 3の考察 (14: 1973)
- 二人用STAR TREK ―リスト処理言語LIPXによるCo-Operating Processesの実験― (19; 1978)
独自・多様なプログラミング言語
独自のプログラミング言語を作ったような話もよく出てきます。目的をはっきり絞ったようなものが多い印象ですね。
- システム記述用言語PLDの使用経験と問題点 (12; 1971)
- LADD: 描図用言語とそのデータ構造について (13; 1972)
- 論理関係処理言語LORELのコンパイラの構成 (13; 1972)
- 汎用グラフィック言語UNGL (14; 1973)
- イオタ言語とイオタシステム ―階層的プログラム開発とその検証のための言語と方法とシステム― (19; 1978)
プログラミング方法論
構造化プログラミング
- ストラクチャードプログラミング支援システムSPOTとその評価 (16; 1975)
- 構造化プログラミング例とデータ構造 (16; 1975)
データ処理・情報検索
SQL もなかった時代に始まり COBOL などの文脈と合わせて「データ処理」というものに向き合おうとした様子が見えたりします。
- データ処理理論の展望 (4; 1963)
- AIS (Automated Information System) ―情報検索処理システム― (10; 1969)
- 情報検索システムのリアルタイムシミュレーション (11; 1970)
-
外務省における情報検索システム (7; 1966)
- 外務省!?
- データ記述言語とCOBOLのデータベース機能 (14; 1973)
- データベータに対するGUIDE/SHAREの要望 (14: 1973)
- 情報検索とSL―導出定理証明プログラム (15; 1974)
- 高水準データベースシステムのための分析と評価 (18; 1977)
- 関係データベース上の高度な質問応答過程について (19; 1978)
算数問題を解く
かと思えば、いわゆる算数の文章問題的なものを解こうとする、東ロボくん的なチャレンジの話が当時からあったり。
- 算術の問題を解くプログラム (2; 1961)
- 算術を解くプログラム (3; 1962)
証明
プログラムで証明をする、みたいな話もかなり以前からあったようです。
- 証明のプログラミング (4; 1963)
- 数学の証明のプログラム (5; 1964)
産業・他業界
情報系の学術関係だけではなく、けっこう実産業界や他業界からの発表もあるのが (いまでも) プロシンの特色です。
初期には、今から見た印象としては「え、ここから?」となる企業からの発表もしばしばありました。
-
鉄鋼プラントにおけるプロセス用計算機の利用 (6; 1965)
- 日本鋼管(株) 川崎製鉄所
-
晶析工程シミュレータ (7; 1966)
- 味の素
-
プラント設計とシミュレーション (13; 1972)
- 東洋エンジニアリング
-
COMによるアニメーション ―地震応答シミュレーション結果の表示― (13; 1972)
- 鹿島建設
-
放射線測定のためのコンピュータ・ネットワーク
- 日本原子力研究所
-
企業名のカナ漢字変換システム
- 日本ユニバック株式会社
- 天文観測整約用言語「アカイホシ」
鉄道
界隈に鉄の人が多いのも昔からだったようです。
システム・OS
-
慶応義塾大学 実験用タイムシェアリング・システム (8; 1967)
- タイムシェアリング・システム!
- IBM 2250映像表示装置とそのプログラミング・サポート (9; 1968)
- OSの理論 (15; 1974)
- システムプログラム作成用ミニ言語 (16; 1975)
- Solo Operating Systemのimplementationとその使用経験 (17; 1977)
-
使いやすさを狙ったTSS用OS―UNIXについて (19; 1978)
- ついに UNIX が!!!
メディア
- 計算機による作曲の試み (4; 1963)
- コンピュータによる色彩画 (10; 1969)
言語・画像・音声・認識・人工知能
生成 AI 全盛の 2020 年代ですが、自然言語処理、画像処理、音声処理、みたいな話もずっとありますね。
- 神経のモデルの数値計算 (3; 1962)
- 計算機による翻訳 (6; 1965)
- 音声の合成 (6; 1965)
- 仮名文字パタン認識の一考察 (7; 1966)
- 活字読取の実験とテレビカメラを利用した入力装置 (11; 1970)
- 機械による学習と認識 (11; 1970)
- 音声識別の一方式 (12; 1971)
- 人工知能のプログラミング言語 (15; 1974)
- コンピュータ断層撮影装置の現状と将来 (20; 1979)
計算センター・データセンター
大学や企業における計算機センター、データセンター、みたいな話題もあります。
- 企業における計算センターの運営について (5; 1964)
- 計算センターの運営について (5; 1964)
- 九州工業大学情報処理教育センターのシステム開発・運用状況について (18; 1977)
組版
ちなみに TeX は 1984 年だそうです。
- 汎用自動組み版システムの一例 (14; 1973)
教育
プログラミングの教育の話がちょくちょくあるのも、初期からのようです。
- 日本の大学における計算機教育について (7; 1966)
- 高校における電子計算機教育について (8; 1967)
- プログラミング学習システムCLASS (14; 1973)
ゲーム・パズル
プロシンには GPCC (Games and Puzzles Competitions on Computers) という分科会もあるように、ゲームやパズルを解く、という話題もよくあります。
- 計算機によるゲームとパズル (16; 1975)
- 将棋ゲームの指し手の理解モデルとオンライン処理について (18; 1977)
暗号・セキュリティ
- 公衆暗号系の構想 ―暗号とNP完全問題― (19; 1978)
夏のプロシン
1 月の冬のプロシンの分科会 (?) 的なあつかいで、夏に「夏のプログラミング・シンポジウム」 (通称: 夏のプロシン・夏プロ) というのが開かれています。 (この記事を公開した 2024 年 9 月 21 日も「夏のプログラミング・シンポジウム 2024」がおこなわれている最中です)
このはじまりは 1964 年 7 月 15 日から 2 泊 3 日で開かれた“夢のシンポジウム”だったそうです。この“夢のシンポジウム”〜夏のプロシンの「報告」も毎年の論文集に掲載されており、初回から情報学広場に掲載することができました。
- “夢のシンポジウム”第1回 ―電子計算機の将来展望シンポジウム― (7; 1966)
情報科学若手の会
また、「情報科学若手の会」という催しも毎年おこなわれています。プロシンには参加したことがないけど若手の会は行ったことある! という方もいらっしゃるかもしれません。
情報科学若手の会も、実はプロシンの分科会的な感じで開かれています。この「報告」も毎年のプロシン論文集に収録されていて、報告も情報学広場に掲載できましたので、興味がある方はぜひ眺めてみてください。
- 第1回 情報科学「若手の会」 (10; 1969)
ご参加をお待ちしています
いかがでしたか? (TM)
冒頭に書いたとおり、プログラミング・シンポジウムはいまも開催されており、ちょうど年明けの第 66 回に向けた発表・論文募集をしているところです。
ただただ「プログラミングが好きな」老若男女と話してみたいネタがあるかた、ぜひ発表・参加を検討してみてください!
-
Koichi Nakashima さんの『Unixの歴史の起源を伝説のゲーム「スペース・トラベル」で遊んで学ぼう!』 (2024 年 9 月 18 日) にも詳しい。 ↩︎
-
当時の文部省科学研究費でおこなわれた「数理科学の総合研究」の一部として、山内二郎先生が始めたもの、ということです。山内二郎先生追悼集刊行委員会編 「山内二郎先生 人と業績」 (1985 年 11 月) より。 (プログラミング・シンポジウムの Web サイトにある「プログラミング・シンポジウムの始まり」に抜粋が掲載されています) ↩︎
-
2024 年現在の日本でプログラミングをあつかう団体、特に学会としては、まず「情報処理学会」と「ソフトウェア科学会」が挙がるでしょう。そのうち古いほうである情報処理学会でも、その設立総会は 1960 年 4 月だったそうです。「情報処理学会60年のあゆみ」より。 ↩︎
-
過去の論文を掲載できていなかったのは、プロシンと情報処理学会では設立の過程が異なっていて運営も独立していたため、著作権処理などが情報処理学会のものとそろっていなかった、などが主な理由です。 ↩︎
-
著作権の利用許諾などについて、権利者捜索のためのご連絡が「過去のプログラミング・シンポジウム報告集の利用許諾について」に掲載されています。 ↩︎
-
本記事を公開した 2024 年 9 月 21 日時点では第 42 回から第 46 回までがまだ抜けているのですが、作業はおおよそ終わっていますので、おそらく 9 月中には公開まで至るものと思います。 (夏のプログラミング・シンポジウムで共有したかったので、取り急ぎ本記事を公開しました) ↩︎
-
本記事の筆者は、データのチェックや PDF 分割の取りまとめと、最終確認の役をやっておりました。 ↩︎
-
なにせ掲載作業を進める中で、ほぼすべてに軽く目は通しましたので…。 ↩︎
Discussion