fortran66のブログ

fortran について書きます。Amazonのアソシエイトとして収入を得ています。

【メモ帳】『カーニハンの UNIX 回顧録』に現れたる FORTRAN

『カーニハンの UNIX 回顧録』

図書館で借りて読んだので、Fortran 絡みで面白かったところをメモしておきます。訳はまぁまぁイマイチです。

§4.8 ソフトウェアツールと Ratfor

カーニハンには、いずれもプローガーとの共著の『プログラム書法』や『ソフトウェア作法』がある様に FORTRAN を使っていたことは明白ですが、同書中でもそう書いています。

1973 年までに、私は割とよく C でプログラムを書く様になっていたが、依然として Fortran もよく書いていた.

§4.7 C プログラミング言語

研究所が Multics から撤退した時,ケン・トンプソンは「Fortran のないコンピュータは完全ではない」と確信し,PDP-7 用の Fortran コンパイラを書き始めた.PDP-7 の主記憶装置は,コンパイラの様なユーザプログラム用には,18 ビットワードで 4K の大きさ(合計 8KB)しかなかったので,これは非常に難しいことが判明した.ケンは再設計を繰り返し,結局,PDP-7 に見合った,Fortran よりは BCPL にはるかに近い言語を考えついた.彼はこれを B と呼んだ.

ケン・トンプソンは「Fortran のないコンピュータは完全ではない」と確信

なお UNIX 第 1 版のマニュアルには B コンパイラと FORTRAN コンパイラが載っているので、この記述は FORTRAN ができなかった様な誤解を生みそうです。

fortran66.hatenablog.com

この後、ワード指向型マシンとバイト指向型マシンの話があって、バイト指向の PDP-11 の導入をもって C 誕生に繋げています。B 言語に型が無いのは PDP-7 がワード指向であったからとされています。

なお歴史的に、固定長のほうが効率良い科学技術計算用はワード指向、不定長の文字列などを扱う事務処理計算機がキャラクタ(バイト)指向だった事には触れられていません。

§5.5 他の言語たち

 ステュー・フェルドマンとピーター・ワインバーガーは,f77 と呼ばれた初めての Fortran 77 コンパイラを書いた。言語としての Fortran 77 は,私が Ratfor で取り繕った Fortran 66 よりいくらか優れていたが,制御フロー文の実用的な一式はまだ持っていなかった.いずれにせよ f77 は,1127 では数値解析のために PDP-11 と VAX の両方でよく使われたので,作るのは困難だったが,その価値は十分にあった.

 

 関連した取り組みとして,ステューとベイブ・ゲイ (Dave Gay) は,Fortran を C に変換する f2c を書いた.f2c は,コンパイラが利用できない、あるいは Fortran コンパイラが高価な商用品であるようなシステム上で,Fortran を使えるようにした。

「初めての Fortran 77 コンパイラ」の意味が分かりませんが、規格をみたした最初の実装という意味でしょうか?原文を辿らないとなんとも言えない表現です。Fortran 90 規格が大きすぎて実装無理と言われていたのを、NAG が (C へのトランスパイラとして)実装してみせたことが知られています。

その他

FORTRAN 記述はもっとありますが、それ以外の面白をメモ。

§5.7 に lex が大学卒業直後にインターンとしてきていた、後の google CEO Eric Schmidt によって書き直されたとされています。

§5.6 に RISC のインストラクションはプログラムの統計分析が C のものに基づくため他の言語に不利になっていると書かれています(1990年代の話ですが)。これに関連して、LISP に最適化された VLIW はいつまでも浮上せず、ついに Itanium で撃沈されて最後まで夢に終わったのが思い起こされますw

§6.3 ビル・ジョイが vi スクリーン・エディタを作り始めていた頃、カーニハンは老害ムーブを見せてます。

私がビルにエディタをいじくり回すのはやめて,博士課程を終わらせるべきだと言ったことは覚えている.彼自身や他の多くの人にとって幸いなことに,彼は私の助言を無視した.数年後、彼は大学院を中退し,Sun Microsystems の共同設立者となった。 (中略) 学生が進路についての助言を求めてきたら,私はしばしばこの話を持ち出す.年長者が常に賢明というわけではない.

スクリーン・エディタはコンソール端末が普及してきた '70年代中葉以降のもので、それ以前はライン・エディタしかないのでプログラム言語も行指向になるのは自然。