fortran66のブログ

fortran について書きます。

メモ帳:Modern Fortran の構造について

Fortran の構造

Fortran の分類

Fortran は、約 60 年間に渡って変化・発展してきたプログラム言語で、言語内容からみて FORTRAN I から FORTRAN77 までの 古典 FORTRAN (Classical FORTRAN) と、Fortran90 以降の現代 Fortran (Modern Fortran) に大きく分けられる。

古典 FORTRAN から受け継がれてきたもの

Fortran 言語には、最初期の FORTRAN I/II の頃から現在に至るまで、受け継がれてきた根幹部分がある。その中で

  1. 代入
  2. 配列
  3. SUBROUTINE / FUNCTION の別

が主要と思われる。

型とは二進列を整数や実数などの代数系で演算するためのパラメータ、代入は不可逆な過程で履歴を伴う作用、配列は記憶領域上で等質・連続な抽象データ構造、SUBROUTINE および FUNCTION は処理の抽象化の仕組みで戻り値・副作用の有無の別による。

現代 Fortran で加わったもの

Fortran の現代化改修には、二つの主要部分がある。

  1. 構造化プログラミング [ i) 抽象データ構造 (オブジェクト指向を含む) ii) 制御構造 ]
  2. 並列処理 [ i) 全配列操作 ii) coarray ]

構造化プログラミングは、N. Wirth 流のミニマリズムに則っており、オブジェクト指向関連の用語も Wirth に従っており、継承は拡張 (extention)、メソッドは派生型束縛手続き[?](type bound procedure) と呼ばれている。また例外構文・ジェネリックプログラミングも Wirth に従って、冗長機能として排されている。これは同じく Wirth に則った Google の GO 言語でも同様である。

現代 Fortran には、これらの他に

3. 浮動小数点数関係 [ i) 一般のフォーマット用 ii) IEEE754 用 ]
4. C 言語との相互運用 [ i) 古典 FORTRAN 水準 ii) 現代 Fortran 水準]

等の機能も付け加えられているが、付随的な部分とみなしてよいと思う。

構造化プログラミング

利用者定義派生型、モジュール、派生型束縛手続き[?]
ALGOL, PASCAL, MODULE-2, Oberon-2 (block, type, module, OO)
SUBROUTINE / FUNCTION, recursion
array

抽象データ構造

制御構造

(つづく)


並列化

対象ハードウェアの抽象化・アレイプロセッサ・パイプライン処理・メモリー共有型・分散型
implicit な(自動)並列化、explicit な並列化、コメント指示行、並列用構文
array

全配列操作

coarray

(つづく)


Modern Fortran Explained (Numerical Mathematics and Scientific Computation)

Modern Fortran Explained (Numerical Mathematics and Scientific Computation)

Classical Fortran: Programming for Engineering and Scientific Applications, Second Edition

Classical Fortran: Programming for Engineering and Scientific Applications, Second Edition