The IBM Mathematical Formula Translating System のドラフト仕様は1954年中旬に作成された。1956年10月にFortranの最初のマニュアルが作成され、コンパイラは1957年4月に完成した。顧客はアセンブリ言語で記述されたコードに匹敵するパフォーマンスが得られない限り高級言語を採用しないので、最初から最適化コンパイラが開発された。
この新しい方法がハンドアセンブルより高速に動作するかどうかには疑いの目があったが、プログラム中の命令数を1/20に削減できるので急速に受け入れられていった。IBMの社内誌であるThinkに掲載された1979年のインタビューでバッカスは「私がこの仕事をしたのは面倒くさがりだったからです。私はプログラムを書くことが好きではなかったので、IBM 701でミサイルの軌道計算プログラムを開発したときに、プログラムの開発を簡単にするためにプログラミングシステムを作り始めました。」[6]と語っている。
Fortranは科学者の間で数学を応用したプログラムの記述に広く用いられたことから、より高速で効率的なコードを出力しようとする原動力となった。また、ライブラリでなく言語として複素数型をサポートしたことは、電気電子工学における動的特性の計算などに代表される科学や工学分野のプログラムを書きやすくした。
1960年までに様々なバージョンのFORTRANがIBM 709、IBM 650、IBM 1620、IBM 7090で動作していた。FORTRANのユーザー数は急増し、コンピューターメーカーがFORTRANコンパイラをこぞって提供したので、1963年までには40を超えるFORTRANコンパイラが存在していた。こうしたことから、FORTRANはアーキテクチャの異なる様々なコンピュータで広くサポートされた最初の言語と言える。
Fortran開発の歴史は、初期のコンパイラ技術の歴史そのものといえる。Fortranで効率的なコードを出力したいという強い要求からコンパイラによる最適化技術が大きく進歩した。
FORTRANIBM 704 メインフレーム
IBM 704用に開発された最初のFORTRANは32の命令をもっていた。 IBM 1401版は革新的な65パスのコンパイラであり、わずか8k語の磁気コアメモリで動作する。コアに記録されたプログラムが段階的に実行可能なコードへと変換されて上書きされる。変換されたコードは機械語ではなく、UCSD PascalのPコードが生まれるよりも20年も前ながら、中間コードを利用していた。 IBMのFORTRAN IIは1958年に開発された。主な改良点は手続き型プログラミングのサポートであり、サブルーチンや関数を定義できるようになった。 その後、FORTRAN IIのデータ型として、DOUBLE PRECISION(倍精度型)とCOMPLEX(複素数型)が追加された。 IBMは1958年にFORTRAN IIIを開発していた。いくつかの新機能に加えインラインアセンブラが可能であった。しかしながらこのバージョンは販売されなかった。704 FORTRANやFORTRAN IIと同様に、FORTRAN IIIにも移植の妨げになるような機種依存の機能があった。他のベンダーから販売されていたFORTRANも初期は同様の問題を抱えていた。 IBMは1961年に顧客の要望を受けFORTRAN IVの開発を開始した。READ INPUT TAPEのようなFORTRAN IIの機種依存部分を削除したほか、LOGICAL(論理型)、論理演算、算術IF文の代替となる論理IF文が加えられた。この時のターゲットマシンは36ビットのワードマシンだったので、整数値は235の大きさの範囲で定義されていた。また、実数の精度は227、倍精度実数の精度は254までだった。FORTRAN IVは1962年にIBM 7030(通称ストレッチ)用がリリースされ、後にIBM 7090版とIBM 7094版がリリースされた。 1965年には国家規格であるANSI X3.4.3 FORTRANに準拠した。 American Standards Association(現ANSI)がFortranの米国規格を委員会で制定するようになったことはFortranの歴史の要である。1966年に2つの異なる言語が制定された。一つは当時既にデファクトスタンダードであったFORTRAN IVを基にしたFORTRANであり、もう一つはFORTRAN IIを基にして機種依存部分を取り除いたBasic FORTRANである。最初に制定されたFORTRANの規格は後にFORTRAN 66と呼ばれた。 FORTRAN 66 規格のリリース後、コンパイラ・ベンダーは多くの拡張を"標準Fortran"に導入し、1966の規格の改訂を始めるようにANSIを促した。この改訂は1977年に制定され、最終的な改訂案は1978年4月に新しいFORTRAN標準として承認された。この新しい標準はFORTRAN 77として知られ、FORTRAN 66後の多くの変更を追加し、多くの重要な機能を加えた: この規格の改訂において、多くの機能は除去されるか変えられて、以前の標準に合致していたプログラムの多くはおそらく無効になった。この時点で除去はX3J3の代替だけが許容された。だからコンセプト "不賛成"はANSI標準においては利用できなかった。しかし、コンフリクトリストの24アイテム(Appendix A2 of X3.9-1978を見よ)ループホールスとパスロジカルケースは以前の標準規格から許容されたが、しかし滅多に使用されない。少数の機能は慎重に除去された。 一般にFortran 90 として知られている規格は、大幅に発表が遅れたもののFORTRAN 77の正当な継承者であり、最終的に1991年にISO規格、1992年にANSI規格としてリリースされた。この抜本的な改訂では1978年のFORTRAN 77規格制定からのプログラミング技術における大幅な変化を反映するために、以下の多くの新しい機能が加えられた
IBM 1401版FORTRAN
FORTRAN II
FORTRAN III
FORTRAN IV
FORTRAN 66
FORTRAN 77
ブロック IFとEND IF ステートメント、オプショナルなELSEとELSE IF ステートメント。改善された言語サポートのための構造化プログラミング。
DOループ機能拡張、パラメータ記述を含む、負の増分とゼロのトリップ・カウント(これ以前のFORTRANではDOループは繰り返しを必ず1回は行うことになっていたのを廃止した)。
改良されたI/OのためのOPEN, CLOSE, と INQUIRE文。
ダイレクト-アクセス ファイル I/O。
IMPLICIT 文。
CHARACTER 型。文字の入出力と処理のための大幅な増補。(以前は、文字のデータを整数や実数などの変数や配列に格納して処理をしていた)。
PARAMETER 文。定数を指定するためのステートメント。
SAVE 文。明示的にローカル変数を永続的に指定する。
内部関数のための総称関数。
ASCII コードの文字順序に基づいた、文字列比較のための内部命令セット(LGE, LGT, LLE, LLT)。
文字列定数をプログラム中で記述するためのホレリス記法、すなわち:
GREET = 12HHELLO THERE!
FORMAT 記述子におけるH編集(ホレリス・フィールド)の読み込み(以前はH編集子で確保された文字列データの領域には入力文で文字列を読み込めた(データが上書きされる)そのFORMAT文を使って出力すると,書き換えられたデータが使われて出力される)。
配列の定義時の添字の範囲を超えたアクセス。
DIMENSION A(10,5)Y= A(11,1)
DOループの途中でいったん外に飛び出して後で戻る("エクステンデット・レンジ"(DOループの拡張範囲)として知られる)。
以前の規格では文字型(CHARACTER型)がなかったので、文字データや文字列データを整数や実数の変数や配列に格納することが行われていたが、Fortran77ではそれを廃止した。
Fortran 90
フリーフォームソース入力と小文字のFortranキーワード。プログラム本文を7桁目から書かなくても良く、80桁の制限も無い。
if (x<0) thenx=0end if
最長31文字までの識別子。
abcdefghijklmnopqrstuvwxyz12345=0.0e0
インラインコメント。
Size:80 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)』
担当:undef