T1
FORTRAN 公開

メタデータ
- 日付
- 年代
- 1950s
- Tier
- T1
- 出典数
- 06
- 関連項目
- 02
FORTRAN(Fortran) は、数式をふつうの数学の書き方に近い形で書き、コンパイラにそれを機械語へ翻訳させる、科学技術計算のためのプログラミング言語である。名は IBM Mathematical FORmula TRANslating System(IBM 数式翻訳システム)に由来する。IBM の John Backus が1953年末に提案し、1954年から彼のチームが開発して、最初のコンパイラは 1957年4月 に IBM 704 の設置先へ配布された。Fortran 90 で「Fortran」と表記するようになるまで、名前はすべて大文字で書かれていた。
経緯は Backus 自身が、1978年の ACM 第1回プログラミング言語史会議(HOPL)に寄せた論文「The History of FORTRAN I, II, and III」に書いている。以下の多くはこの論文による。
問題は、計算機よりプログラミングのほうが高くつくこと
Backus によれば、1950年代初めのプログラミングはほとんどすべて機械語かアセンブリ言語で行われていた。彼の見積もりでは、計算機の運用費用の最大4分の3をプログラミングとデバッグが占め、計算機が安くなるほどこの比率は悪化する。この経済的な理由が、1953年末に上司の Cuthbert Hurd へ手紙でプロジェクトを提案した主な動機だったという。正確な日付は残っておらず、Backus は1953年12月だろうと書いている。
Hurd は1953年12月か1954年1月にこれを承認し、Irving Ziller が加わった。1954年5月までに Harlan Herrick と Robert A. Nelson が続いた。標的とした IBM 704 が発表されたのも、ほぼ同じころである。
FORTRAN を決めた判断
代数式をコンパイルすること自体は新しくなかった。Backus は、Whirlwind で動いていた MIT の Laning と Zierler の方式を「世界初の稼働する代数コンパイラ」と認めている(Knuth と Pardo はその栄誉を Alick Glennie の AUTOCODE に与えている、とも書き添えている)。彼は自分の過去の発言も訂正した。長いあいだ、代数記法の発想は Laning と Zierler の実演を見て得たと信じていたが、1954年の手紙を確かめると、チームが初めてそれを見たとき FORTRAN の構想はすでにかなり進んでいたという。
FORTRAN を他と分けたのは、力を注いだ場所である。
| 1954年の一般的な見方 | FORTRAN チームの賭け |
|---|---|
| 自動プログラミングの仕組みは計算機を5〜10倍遅くする | 704 ではその遅さはもう許されない |
| 以前の機械では、遅い浮動小数点サブルーチンが他の非効率を覆い隠していた | 704 は浮動小数点とインデックスレジスタをハードウェアで持ち、非効率の隠れ場所が無くなった |
| 難しいのは言語の設計である | 言語の設計はたやすく、本当の難題は翻訳器である |
Backus は、もし最初の数か月の FORTRAN が手書きの半分の速さの目的プログラムしか出せなければ、受け入れられる見込みは深刻な危機に陥ると考えていた、と書く。だからコンパイラは最適化を前提に作られた。コンパイラの第2セクションが行った解析について、Backus は、出てくるコードがそれを調べたプログラマーを驚かせるほどだったと書いている。ループの外へコードを移し、行方向と列方向の走査の違いを利用し、ループの出口まで最適化した。IBM 自身の沿革は、これを最初の最適化コンパイラと呼んでいる。これは IBM の主張である。
「約6か月で」
先に仕様が出た。「Preliminary Report, Specifications for the IBM Mathematical FORmula TRANslating System, FORTRAN」で、日付は 1954年11月10日 である。1954年末から1955年初めにかけて、Backus・Herrick・Ziller は704を発注した顧客に向けて5、6回の説明会を開き、コンパイラは約6か月で完成すると約束した。この「あと6か月」は、2年以上後の1957年4月に実際に完成するまで変わらなかった。聴衆の大半は懐疑的だった。
「The FORTRAN Automatic Coding System for the IBM 704」の Programmer's Reference Manual は1956年10月15日付で、顧客向けにシステムが存在する半年前に出ている。
1957年4月 ── 配布
1957年4月初め、チームはシステムが704の全設置先に配布できる程度にはバグが取れたと判断した。最初の試み ── 1組約2,000枚のバイナリのカードデッキを打ち抜くこと ── はあまりに誤りが多く、一晩かけて1、2組しかできなかった。そのうちの1組が、何の表示も説明書も無いまま Westinghouse Bettis の設置先に届いた。Herbert Bright のグループはそれが待望の FORTRAN だろうと推測し、手探りでテストプログラムをコンパイルさせ、1957年4月20日 に28ページの正しい結果を印字した。
実際の配布は磁気テープで行われ、1957年4月8日付の「Preliminary Operator's Manual」が添えられた。現場でのデバッグと修正カードの配布は1957年の晩夏まで続いた。
普及
広まり方の速さは、Backus 自身の1958年11月の報告に表れている。同年4月に26の設置先を調べたところ、半数以上が問題の半分以上に FORTRAN を使っていた。1958年秋には約60の設置先に約66台の704があり、それらの機械命令の半分以上が FORTRAN によって生成されていた。704の利用者団体 SHARE は、FORTRAN をプログラム交換の2番目の公式な媒体に指定した。
サブルーチンを定義して別々にコンパイルできる FORTRAN II は1958年春に配布された。Ziller が設計し、704の命令と FORTRAN の文を混ぜて書ける FORTRAN III は、1958〜59年の冬から主に IBM 社内の約20の設置先に限って提供され、一般には配布されなかった。Backus は、この機種依存性が 704 とともに FORTRAN III の終わりを確実にしたと書いている。
その後
1962年に FORTRAN IV が出た。1966年3月に承認された FORTRAN 66 は、業界標準となった最初の版である。言語はその後も改訂を重ね、最新は Fortran 2023 である。いまも高性能計算で使われ、世界最速のスーパーコンピュータを測るベンチマークのプログラムにも使われている。
後続の言語は FORTRAN を出発点にした。ALGOL 60 は3年後に続き、LISP は、John McCarthy が FORTRAN をリスト処理向けに拡張するのは難しすぎると見たところから始まった。生みの親がのちにこの言語の体現したスタイルに異を唱えた経緯は、John Backus のページにある。
同時代の言語の中での位置は プログラミング言語の年表 を参照。
よくある質問
- FORTRAN とは何ですか。誰がいつ作ったのですか。
- 数式に近い書き方で科学技術計算のプログラムを書き、それを機械語に翻訳させるための言語です。名は IBM Mathematical FORmula TRANslating System に由来します。John Backus が1953年末に上司の Cuthbert Hurd に提案し、1954年から IBM のチームが開発、1957年4月に IBM 704 向けのコンパイラが配布されました。
- FORTRAN は世界初の高水準言語なのですか。
- そうは言い切れません。数式に近い記法をコンパイルする試みは先行しており、Backus 自身が MIT の Laning と Zierler の方式を世界初の稼働する代数コンパイラと認めています(Knuth と Pardo は Glennie の AUTOCODE にその栄誉を与えています)。Backus によれば、FORTRAN のチームが他と違ったのは、本当に効率のよい目的プログラムを出そうとした点でした。
- FORTRAN の開発にはどれくらいかかったのですか。
- 約3年です。1954年に始まり、1954年末から顧客に話した時点では約6か月で完成するとしていましたが、実際の完成は2年以上後の1957年4月でした。
出典
IBM 自身による沿革。「最初の最適化コンパイラ」などは IBM の主張
最終更新: