fortran66のブログ

fortran について書きます。

【メモ帳】C++ に module ?

Remember the FORTRAN

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1300r0.pdf

cpplover.blogspot.com

オブジェクト指向言語では、Module を Class のシングルトンで代用する傾向がありますが、N. Wirth が腐しているように、形式が似ているからと言って概念の異なるものを味噌糞ごっちゃりにしてはいけないと思います。これが余計な混乱を招いている気がします。

Fortran の module 問題は、submodule の導入で少し減っていますが、コンパイル順の問題は本質的に解決しませんw

コンパイラオプションで check option の様な物を指定することで、まず1回インターフェースだけを(オブジェクトを生成せずに)生成させておくというテクニックが ACM に出ていました。これは軽いのでサクサク進みます。その後、順序が確定するので可能な分は並列コンパイルできます。[若干修正]

fortran66.hatenablog.com

N.Wirth が 分割コンパイルできない PASCAL の欠点を、 MESA 言語にヒントを得て Modula で Module を導入することによって克服したわけですが、興味深いのは Modula-2 やその後継の Oberon では、submodule のように、インターフェース部と実装部を分けていたのに、後の Oberon-07 では Fortran90 のようにインターフェース部を設けず、実装部から自動生成するように仕様を変更したところです。Fortran 2008 と丁度逆行するタイミングなのが面白いです。

なお Modula-2 では、Module が入れ子のように定義できましたが、複雑になるわりにメリットが少ないので Oberon では Fortran のように入れ子禁止になっていたと思います。

Modern Fortran Explained: Incorporating Fortran 2018 (Numerical Mathematics and Scientific Computation)

Modern Fortran Explained: Incorporating Fortran 2018 (Numerical Mathematics and Scientific Computation)

Programming in Modula-2 (Monographs in Computer Science)

Programming in Modula-2 (Monographs in Computer Science)

Programming in Oberon: Steps Beyond Pascal and Modula (ACM Press)

Programming in Oberon: Steps Beyond Pascal and Modula (ACM Press)