fortran66のブログ

fortran について書きます。

どのFortranを勉強すべきか?

結論から言うと Fortran95 を基本として、Fortran2003 や Fortran2008 の機能をつまみ食い的に使うのが現実的な気がします。

Fortran95 に完全に対応したコンパイラは、リリースされてから年月も経ってこなれてきています。一方 Fortran2003 は、未だ Cray と IBM 以外からは完全に対応したコンパイラが出ていません。それでも、各社とも Fortran2008 の便利そうな機能を取り入れることを行っています。

またFortran95 は、静的な厳しい型チェックをしているので、バグが出にくくなっていますが、Fortran2003 からは、動的な(実行時)型の結び付けや配列の自動再割り付けが可能なために、実行時エラーが出やすくなっています。

ところで Fortran の強みでもある古くからの資産は、多く FORTRAN77 で書かれており、また FORTRAN66 のコードも幅広く残っているため、これらを切り捨てる訳にもいきません。しかしFortran90以降は、比較的現代的な文法をもった言語になっているので、教育的見地から望ましい選択肢になっています。


さて Fortran は、後方互換性のために、歴史の積み重ねがそのまま残っていて、命令が直交化してしていません。つまり同じ事を幾通りにも表現できる冗長性を持っています。例えれば国語に於いて、上古、中古、近世、現代の単語や文法が使えるのと同じようになっています。これらを、時代区別なく混ぜて用いることは滑稽で好ましくありませんが、初心者には判断が難しいようです。

その一方、歴史的な事情から奇妙な仕様になっている言語要素もあって、これも初心者を悩ませるようです。これを納得するには時間軸方向での発展を理解する必要があります。よって、言語規格の時間発展を眺めておく事が好ましくなります。

(中途)

=======================================================================
西暦 名 主たる特徴
=======================================================================
John Backus 率いる小さなグループ
1957 FORTRAN I  初めての成功した計算機言語。文関数の導入。 
1958 FORTRAN II  SUBROUTINE, FUNCTION, COMMON の導入。
[FORTRAN III  インライン・アセンブラ導入。公開されず。]  
=======================================================================
IBM 本格的開発 Backus の手を離れる
1962 FORTRAN IV   事実上の標準。(FORTRAN II と互換性なし。) ホレリスBCD文字コード
(1963 ASCII 文字コード / EBCDIC 文字コード 制定)
1966 FORTRAN 66   計算機言語初の ANSI 規格。
=======================================================================
構造化の流れ
1978 FORTRAN 77   IF...THEN...ELSE...END IF の導入。(FORTRAN 66 と互換性なし)
1978 FORTRAN 77(MIL-STD-1753)米軍仕様。IMPLICIT NONE の導入。
=*=*=*=*=*=*=*==*=*=*=*= 越えられない壁 *=*=*=*=*==*=*=*=*=*=*=*=*=*=*= 
ALGOL的屋上屋 厳格な静的型付け
1991 Fortran 90   小文字、自由形式、再帰、動的記憶領域割り付け、module、ポインタ。(FORTRAN 77 完全互換)
1996 Fortran 95 elemental 属性。(Fortran 90 の修正)
=======================================================================
OOP的拡張 動的結び付け
2004 Fortran 2003   OOP、自動配列再割り付け、C言語連携。
2010 Fortran 2008  並列化対応強化。coArray、DO CONCURRENT。
=======================================================================