プログラミング
Fortranの近代化という forlorn hope(絶望的な希望)
A Forlorn Hope of Fortran Modernisation (amenzwa.github.io)
要約
この記事は、科学技術計算におけるFortranの重要性を強調しつつ、若手プログラマーの不足という現状と、その解決策として依存型Fortranの提案を探求しています。Fortranは依然として大規模並列科学技術計算に不可欠ですが、その古いイメージと学習者の減少が課題となっています。
全文翻訳
Amen Zwa, Esq. の出版物 © 2026. 無断転載を禁じます。 Amen Zwa, Esq. Fortranの近代化という forlorn hope(絶望的な希望) 依存型型付けFortranの提案 [目次] 数十年にわたり、IT業界の人々はFortranの終焉をドラフトすることに喜びを見出していました。しかし、この古い言語は生き残っています。しかし近年、Fortranユーザーコミュニティは警鐘を鳴らし始めています。若いプログラマーが引退していくのを置き換える若いプログラマーを見つけるのにFortranショップは苦労しており、若い世代はこの時代遅れの言語にキャリアを捧げることを望んでいません。現在、長期間にわたる大規模で超並列な科学技術アプリケーションの実装に関して、Fortranに匹敵する、ましてやそれを超える言語は存在しません。CやC++でさえもです。しかし、現代のプログラマーはFortranについて何も知りませんし、興味もありません。Fortranにはイメージの問題があると言えば十分でしょう。この記事では、Fortranの人気が低下した原因を探り、潜在的な解決策について議論します。ここで私が述べる主な点は次のとおりです。
Fortranは科学技術並列コンピューティングに不可欠です
業界はFortranプログラマーの不足に直面しています
業界には、その陣営を補充するための実行可能な計画がありません
私の意図する読者には、以下のグループが含まれます。
Fortran言語標準を維持するコンピュータ科学者
Fortranを使用して科学技術ソフトウェアを実装する科学者およびエンジニア
並列処理および科学技術プログラミングに関心のあるSTEM分野の学生
関与するトピックの幅と深さを考えると、読者は手続き型言語と関数型言語の両方で経験豊富な並列プログラマーであり、単純型理論、パラメトリック型理論、および依存型理論に関する実用的な知識を持っていることが期待されます。
この21世紀の過酷な現実にこの20世紀半ばの言語を補強しようとすることは、狂気に近いように思えるでしょう。そうではありません。
私はFortranの近代化は価値があり、必要であると主張します。
ただし、2020年代のためにFortranを刷新することは、現時点では forlorn hope(絶望的な希望)にすぎないことを認めます。
この主題に入る前に、Fortranとの私のつながりについて簡単に説明します。
1980年代初頭の他の電気工学の学部生と同様に、私は大学でFORTRANを学びました。DEC VAX-11/780でFORTRAN 1977を使用しました。
電子回路シミュレーション、デジタル信号処理(DSP)、有限要素法(FEM)、計算流体力学(CFD)、およびその他の工学計算の実装において、FORTRANは当時の主要言語であったため、私たちはその言語を学ぶ必要がありました。
しかし、その時代、私たちのSTEM分野の学生のほとんどは、手に入るあらゆるプログラミング言語を学ぼうとしていました。
科学技術分野で人気のある言語は数えるほどしかありませんでした。LISP、FORTRAN、C、Pascal、ML、Prologです。これらの言語の良いコンパイラはミニコンピュータでしか利用できず、これらの大規模で高価なマシンにアクセスできる唯一の場所は、大学のコンピュータセンターでした。
希少性が需要を生むのでしょう。
私は、好みの言語であるLISP、C、MLでほとんどの作業を行いました。そのため、私のFORTRANの経験はクラスの課題に限られていました。
その後、コンピュータサイエンスの大学院で、私の研究はCRAY Y-MPとそれに接続されたT3DでFortran 90に戻ることになりました。
1990年代半ばに学界を離れて産業界に移ったとき、Fortranとの私の専門的な関係は終わりました。
その時代でさえ、IT業界でFortranを使用している人はいなくなっていました。
しかし、個人的な関心から、私は長年にわたりFortranの進化を追ってきました。
したがって、ここで提示する私の見解は、古いFORTRANでの時代遅れの実際的な経験、現代のFortranの窮状に対する現在の認識、そして現代および古い数多くのプログラミング言語での数十年にわたる実践的な経験から生まれています。
そして、実用的なレベルではFortranのファンではないことを認めますが、その独創性、長寿、歴史において、知的なレベルではFortranを本当に賞賛しています。
さて、始めましょう。
昨日
現代のコンピュータという概念は、1930年代後半に数学者の心の中で生まれました。
その後、1940年代半ばに、現代のコンピュータの実装が電気技師の手によって実現されました。
当初、プログラミングは配線によって行われていました。
その後、ハードウェアスイッチを使用してレジスタにバイナリワードを入力することが続きました。
その後、シンボリックアセンブリ言語が発明されました。
そして1957年、卓越したコンピュータ科学者であるBackusとIBMの彼の同僚は、世界初の高水準プログラミング言語であるFORTRANを作成しました。
その目的は、科学者が外国語であるアセンブリ言語ではなく、母国語である数学的記法を使用して科学技術アプリケーションを実装できるようにすることでした。
過去70年以上にわたり、Fortranは進化を続け、数十年にわたる進歩を取り入れてきました。
数多くの標準化されたFortranのバージョンが存在します。1966年、1977年、1990年、1995年、2003年、2008年、2018年、2023年です。
この記事が書かれている2024年初頭の最新の標準バージョンであるFortran 2023(ドラフト)は、強力な静的型システム、ユーザー定義型、末尾呼び出し最適化再帰、オブジェクト、モジュール、ガベージコレクション、そして組み込みのパーティションドグローバルアドレス空間(PGAS)並列プログラミングを備えた、完全にモダンな言語です。
現在に至るまで、Fortranは組み込みの並列処理機能を持つ唯一の標準化された言語です。
その古さにもかかわらず、数十年にわたる蓄積にもかかわらず、Fortranは本質的に非プログラマーがすぐに使いこなせるシンプルな言語のままです。
その意味で、FortranはPythonのように使いやすいです。
しかしPythonとは異なり、Fortranは科学技術並列コンピューティングに関しては、強力なCよりも高速です。
今日、現代のFortranは、科学技術計算の主力である大規模で超並列なアプリケーションにおいて、依然として主要な選択言語です。
世界の一部のエリート工学大学では、コンピュータサイエンスの学生は聞いたことがないかもしれませんが、依然として工学部の学部生にFortranを教えています。
高性能なスーパーコンピュータ上での科学技術並列コンピューティングに関しては、Fortranに競合できる現代の言語はまったく存在しません。
現代のCobolについても同様です。
学部生が大学で学ぶことは決してありませんが、多くの大規模金融機関は依然として大量のトランザクションを処理するためにCobolに大きく依存しています。
メインフレーム上での高スループットリアルタイムトランザクション処理に関しては、Cobolに競合できる現代の言語はありません。
最初世代の高水準プログラミング言語は、1950年代後半から1960年代初頭にかけて登場しました。
FORTRAN(1957年)は科学技術計算専用に設計された最初の高水準言語でした。
LISP(1958年)は、記号計算と自動定理証明のために設計された最初の関数型プログラミング(FP)言語でした。
ALGOL(1958年)は最初の手続き型プログラミング(PP)言語でした。
COBOL(1959年)は、目的別に構築された最初のビジネスコンピューティング言語でした。
Simula(1962年)は最初のオブジェクト指向(OO)言語でした。
これらのOG(オリジナルギャングスター)言語は、何らかの形で生き残っています。
現代のFORTRANはFortran 2023です。
現代のLISPはCommon Lisp 2005です。
現代のALGOLは本質的にすべての現代のPP言語であり、その代表格はC 2023です。
現代のCOBOLはCobol 2023です。
現代のSimulaはすべての現代のOO言語であり、最も人気のあるのはC++ 2023です。
LISPは、1970年代と1980年代のルールベース人工知能(AI)の全盛期に非常に人気がありました。
今日、その最もよく知られた用途は、比類なきEmacsエディタのスクリプト言語としてです。
そして、最初のFP言語として、OCamlやHaskellのようなすべての現代のFP言語は、その精神的な子孫です。
ALGOLは学界から抜け出すことはありませんでしたが、その影響は、Pascal、C、そしてRust、Odin、Zigのような他の現代のシステムプログラミング言語を含む、後続のすべてのPP言語の設計に見られます。
Cは、コンパイラ、ライブラリ、オペレーティングシステムなどのシステムプログラミングで依然として広く使用されています。
その最も有名な用途は、Linuxカーネルの実装です。
Simulaも主に学術研究言語でした。
しかし、SmalltalkやC++に大きな影響を与えました。
Smalltalk、