Arantium Maestum

プログラミング、囲碁、読書の話題

バッカスの功績と経歴

John Backusという計算機科学者には大きな功績が三つある:

  • IBMFORTRANの開発を提案・主導したこと
  • 構文の形式的な定義を可能とするBackus-Naur FormをALGOLの開発のために提案したこと
  • チューリング賞受賞講演で、FORTRANのような命令型プログラミングからの脱却を提唱して関数型プログラミング言語FPを提案したこと

現代でも使われている最古の言語であるFORTRANの開発責任者というだけではなく、実際にプロジェクトを売り込んで上司に承認させたのもバッカスのようで、これはやはりすごい。LISPの開発者McCarthyも「IPLはアセンブリ言語っぽくて嫌だ、やっぱりFORTRANみたいに綺麗に書ける言語が使いたい」(意訳)とLISPを作る前には言っていた。

BNFに関しては構文解析を多少なりともかじったことのある人間なら必ず目にするし、TaPLの宇宙語の一部にもなっている。人類が形式言語について考える時の基本ツールの一つである。

最後のFPに関しては現代ではあまり聞かないし、どちらかというと「関数型プログラミング」を推したのが大きいのかな?と長らく考えていた。しかし、最近古い文献を漁るようになって、例えばProceedings of the 1981 conference on Functional programming languages and computer architectureなどを見たところ大量にFPをベースにした論文が見つかったので、その時代ではかなり活発に研究されていたようで、やはりFPそれ自体もかなり重要な功績のようだ。このチューリング賞受賞講演についてはまた別途記事を書きたい。

さてこのような輝かしい功績を持ち、さらにIBM出身ということで、まあコロンビアかハーバードあたりの数学あるいは工学博士でエリート街道まっしぐらな人なんだろうなーとぼんやりイメージしていた。しかし実態はちょっと違うようだ。

Out of their mindsという1998年に書かれた、著名な計算機科学者15人の(本人インタビューを元にした)伝記を最近読んでいる。この本の最初の章がバッカスについてで、もちろんIBM入社以降の功績に記述の大部分を割いているのだが、人生の前半についても書いてあり、想像していたよりもかなり迷走しており面白い。

  • 高校留年
  • 父親の意向で大学では化学を専攻するものの、飽きて1年でドロップアウト
  • 軍隊に入隊
  • 適正を見出されて軍隊のPremedプログラムに入る(医学部に進学するための)
  • 医学部に進学するも1年でドロップアウト
  • コロンビア大学の数学科に入り、3年後学士取得
  • たまたまIBMコロンビア大学と提携してデモンストレーションとして開発したSSECマシンを見学、就活中だと言ったら勧められてその日のうちに入社テストを受け内定
  • IBMに入社しSSECマシンのプログラマとして3年過ごす

実際の機械でゴリゴリ数値計算のプログラムを書いていた経験がその後活きてきたわけだ。あと本人は迷走しているのだけど要所で才能が認められていて地頭がすごくよかったのだろうな、という印象。

その後von Neumannが推していた固定小数点数を嫌って(プログラマが自分ですべての数値の桁を把握、修正する必要があったため)勝手に浮動小数点数を導入したり、von Neumannが「貴重なコンピュータを事務的な翻訳に使うな」と否定したFORTRANを「これからの時代コンピュータよりプログラマの方が貴重だ」と言って上司に認めさせたり、チューリング賞を受賞して「von Neumannが提唱したコンピュータアーキテクチャボトルネックがあっていけてない、これからは関数型プログラミングだ」とブチ上げたりした。von Neumannに対して逆張りしてことごとく大成功しているようにも見える。

世紀の大天才von Neumannが自分の脳の拡張として(大量のプログラマを半ば備品として扱いつつ)使っていたコンピュータが、大量生産のレールに乗りコストが下がり、天才ではない人間にも扱えるようになり、その分プログラマ富豪的に消費するスタイルは成り立たなくなる。そういう流れを肌で感じて機敏に動き、人間の頭脳に収まり得る営みとしてプログラミングを成立させたというのがバッカスの功績の最たるものなのかもしれない。