LoginSignup
48
42

More than 5 years have passed since last update.

恐るべし! むかしむかしの FORTRAN !

Last updated at Posted at 2015-03-14

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(拒絶しない限り受諾とみなす)方式で、以前のお願いが受諾になっていたみたいである。
まあ何も仕事はなかったので、今回もほっておこう。。。

48
42
9

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
48
42