再掲:Fortranのループ変数が I,J,K,L,M,N になった理由
(Richard L. W.(ed.), History of Programming Languages p.70)
ついでに LOOP 0回 1回 問題の回答も載せておきます。
この DO LOOP 0回 1回 問題については、ループという言葉の定義上 0回 1回も反復ではないので、最低 2回回るべきという冗談の提案がされた記事を見たのですが、すぐ出てこない。
女子力対決
◆Mitchell, G., 1957: Programmer's Primer for FORTRAN Automatic Coding System for the IBM 704
(Richard L. W.(ed.), History of Programming Languages p.65)
◆Adams, J. C., 1974: CDC 6600/7600 Primer
Niklaus Wirth: The History of Modula-2 and Oberon
The History of Modula-2 and Oberon - ETH - Computer Science
Modern Fortran は ALGOL 系の言語から強い影響を受けています。特に ALGOL からは block、PASCAL からは構造化・型チェック、Modula-2 からは module, Oberon(就中 Oberon-2) からは OO (Object Oriented) が取り入れられています。
その ALGOL, PASCAL, Modula-2, Oberon を作り上げてきた Wirth の回顧的評論が表題のものです。前の言語の失敗した機能を挙げて、次の言語で削除・追加していく選択が興味深いです。
Fortran では class の inheritance が type extension と呼ばれるのは Oberon からきているようです。Wirth は type bound procedure という構造を取ることにより、従来の手続き型プログラミングの枠の中で OO の機能が実現できると説いています。
ホーアの、言語の特徴は取り入れなかった機能により強く出る、というのも面白い意見だと思いました。
C.A.R. Hoare used to remark that a language is indeed defined by the features it includes, but more so even by those which it excludes. My own guide-line was to omit features, whose correct semantics and best form were still unknown.
Fortran には取り入れられていない PASCAL の集合型、部分範囲型、variant レコードなどが、何故駄目だったかなどについても少し述べています。
またハードウェアの進歩がソフトウェアの方に影響するということについても触れています。
The Programming Language Oberon-2
www.youtube.com
メモリー1M の FPGA に RISC 命令を読み込ませて Oberon を動かしている模様。集大成?