cure_honey さんの 今時の Fortran 入門 に対抗して、
というわけでもないですが、むかしの話。
学生時代はたいした計算をすることもなく(まあじゃんの点数くらい)、コンピュータやプログラムの講義は一度も受けたことない(いまだに)。
シミュレーションでもつくって修論を誤魔化すことになってさあ大変。やむなく FORTRAN を独学。(*1)
当時はもちろんメインフレーム・大型計算機しかなく、これが本部構内の計算機センターに鎮座まします。
今出川通りはさんで 500m ほどの物理教室の端末室は、ぼろいカードリーダ(すぐ詰まる)とラインプリンタ、プロッタ、感熱紙の TSS 端末各1台だけ。
課金のため、使ったカードの枚数やプリントした紙の長さまで記録必要で、巻尺が備え付けでした。(*2)
大量計算の場合は、センターまでカードをカートに積んで出かけるのだが、これをひっくり返すとさあ大変である。
ABEND
なにか実行すると、ラインプリンタに1行だけ ABEND って冷たく出るだけ。この意味が分かるのに数年かかった。
鯨の解体
プロッタ用紙(幅約 1m)に小さくたくさん書いたグラフなどを切り分ける作業。誰かがプロッタ用紙を持ち込むと、研究室総出で解体作業していた。
FORTRAN 恐るべし
当時(1978,79)は FORTRAN 66 ?
IF THEN ELSE のないやつ。 従ってそれまでは GO TO の嵐になりがちだった。
普通は以下みたいに書くんだけど、
DO 5 I = 1, 10
IF .... GO TO 99
5 CONTINUE
99 ....
あるとき先輩のコードを見ると以下みたいな感じで異様にスペースが少ない。
DO5I=1,10
IF .... GOTO99
5 CONTINUE
99 ....
聞いてみたら、「えっつ、スペース入れてもええんか?」と言ってました。当時の処理系は、字句解析と構文解析がちゃんと分離しておらず、上みたいな書き方もできたみたい。
以下は会社の同僚に聞いた話。
ここでコンマとピリオドを打ち間違えるとどうなるか?
DO5I=1.10
コンパイラの解釈は
DO5I = 1.10
すなわち DO5I という実数型変数に 1.10 という実数を代入して、何事もなくコンパイル完了、
これを実行すると。。。
NASA のロケットが落ちた! とかいう噂もあるらしい。
FORTRANの記述の旧式さによる逸話
(3/14追記) cure_honey さんコメントの資料によれば、
DO 10 I=1.10
と書いても、
DO10I = 1.10
と解釈されてしまうらしい。。。
会社入ってから
やっと FORTRAN 77 になる。
シミュレーション開発など。FFT も自力で組んでいた。
ミニコンの FORTRAN で実験用のステップモーター回したこともあったかも。
研究所の小さな端末室だったけど
- カードリーダも高速、エアー吹き出しでカードを分けて詰まらない
- ラインプリンタ1台
- ソニーテクトロのストレージ管の CRT 端末が 2台
- センターに行くとカードパンチャーという女性が、カードを打ってくれる
やっぱり企業は違うわな。
普段は担当者が端末を立ち上げておいてくれるんだけど、たまに自分でやらないといけない場合も。
清水義範氏がどっかで書いていたけど、コンピュータを立ち上げる、とか言うけど何とおおげさな、とか。
覚えてないけど立ち上げはこんな感じ
- 各装置の電源を入れる。順序は準備体操と同じで周辺から中心へ(いまどきの人は知ってる?)。通信制御用のミニコンが最後
- ミニコンに紙テープをセット(当然紙テープはときどき切れる。。。)
- ミニコンの4つのトグルレバーでブートコードを入力(要するに 4ビット単位で入力)。紙テープを読み込ませる
- オープンテープをセット、それを読み込ませる
- カードリーダにカードを読み込ませて。。。
やっと立ち上がるのである(この間10分くらい?)。
1985 本物のプログラマはPascalを使わない
伝説の論文が bit誌に掲載、そのコピーが回ってくる。すごい。技が違う。。。
- 20 ナノ秒もループ実行時間が改善されるならば、自己書き換えプログラミング・コードを記述する。
わたしはこのあたりから FORTRAN は使わなくなって、C言語、LISPなどに移行する (*3)
初めて見る FORTRAN 90
その後長らく情報処理学会の査読委員をやらせれていたんだが(*4)、「地球シミュレータ」とかの論文が回って来る。1ページほどのコードサンプルも載っていた。
よく分からんが、むかしと全然違う、なんだかすごそう! 「全配列操作」というやつ?
拡散方程式 $ \frac{\partial T}{\partial t} = K \frac{\partial^{2} T}{\partial x^{2}}$ の解法が以下で書けるらしい。
(3/14 追記)この論文はボツになってしまったが、該当部分はたぶん これ と同じ。
45 temp(2:nx-1) = temp(2:nx-1) & ! TIME INTEGRATION
46 & + kappa*(temp(3:nx)-2*temp(2:nx-1)+temp(1:nx-2))/dx**2*dt
蛇足
(*1) ほんとは学部4年のとき TI のプルグラム電卓を買って、けっこう使った。
これはなかなかの名機であった。
たぶん TI-58C である
(*2) <4/11追記>
- なおメインフレームというのは基本的にレンタル。
- メーカーがハード・ソフトと専任のオペレータ(人)を貸し出して使用料をとる方式。
- その使用料が使用者に課金される。
</4/11追記>
学生時代のメインフレームは F 通さんの FACOM だった。
あるときその FORTRAN マニュアルを読んでいると、裏表紙に替え歌がのっていた。
♪ ヤッホー、フォートランランラン
♪ ヤッホ、フォートランランラン
♪ ヤッホ、フォートランランラン、ファコム!
なんちゅう会社や!
(*3) PC-8000シリーズ の発売が 79年、
やっと会社で買ってもらえたのはその数年後である。
- 5'' FDドライブ X 2 、プリンタなど合わせると約70万円!
- 皆さん、くれぐれもメモリなどの「桁」を間違えないように
ちなみに当時の物価事情
- 学生時代の学費は 2K 円/月 (修士で 4K, 8K にあがった)
- 初任給は修卒で 135K 円くらい、5月のベアで 145K 円くらいになった。(いまでも2倍は全然いかない?)
- 当時の米ドルは 220 ~ 250円くらい
なお当時は別のマイコンで CP/M もつかっていた。
- 8 インチフロッピーだった
- これを抱えて歩いていると、ほんとに仕事をしてるみたいに見える!
- もちろん本物のプルグラマは、パンチカードとオープンリール以外は偽物というであろうが。。。
(*4) 5/15 追記
任期満了で数年前に引退、学会もやめてしまった。はずだったのだが、
今日「シニア査読委員再任のお願い」メールが届いた。
何のこっちゃ! と思ったが、どうも OptOut(拒絶しない限り受諾とみなす)方式で、以前のお願いが受諾になっていたみたいである。
まあ何も仕事はなかったので、今回もほっておこう。。。