Fortran(「Formula Translation」の略)は、高水準プログラミング言語で、特に科学技術や工学のアプリケーションに適しています。電子計算機用に開発された最初のプログラミング言語の一つであり、その誕生以来大きく進化してきました。Fortranは配列データの効率的な操作を可能にし、複雑な数学的計算をサポートするため、数値気象予測、計算物理学、バイオインフォマティクスなどの分野で選ばれる言語となっています。
Fortranは1950年代にIBMによって数値計算と科学計算のために設計された言語として開発されました。最初のバージョンであるFortran Iは1957年にリリースされました。基本的なアイデアは、科学者や技術者が基盤となるハードウェアの複雑さを知らなくてもプログラムを書くことができる言語を作ることでした。
その後、Fortranの新しいバージョンが導入され、それぞれが新機能を追加し、使いやすさを向上させました。Fortran IIがすぐに続き、構造化プログラミング機能が追加されました。1966年にはFortran IVが導入され、業界標準となりました。Fortran 77(1978年リリース)は、文字データ型や改善された入出力機能などの機能を追加しました。
1991年以降、Fortran 90は配列プログラミング、モジュールプログラミング、再帰、動的メモリ割り当てを導入しました。Fortran 2003およびFortran 2008は、オブジェクト指向プログラミングやCプログラミング言語との相互運用性の向上などの機能で言語をさらに強化しました。最新の標準であるFortran 2018は、並列処理のための互換性と機能の向上を含むさらなる強化をもたらしました。
Fortranは多くの科学技術分野で活発に使用されており、GNU Fortran(gfortran)やIntel Fortran Compilerなどの現代的なコンパイラによってサポートされています。大規模なレガシーコードベースがあり、多くの科学ライブラリがFortranで書かれているため、特定の領域では重要な言語となっています。
Fortranは強い型付けの言語で、変数の型を明示的に宣言する必要があります。例えば:
INTEGER :: i
REAL :: x
CHARACTER(len=10) :: name
Fortranは配列の処理に優れており、簡単な構文で配列全体に対する操作を可能にします。
REAL, DIMENSION(10) :: A
A = 2.0 * A ! 配列Aの各要素を2倍します
Fortranはループや条件文などの従来の制御構造を提供します。
DO i = 1, 10
IF (A(i) > 0) THEN
PRINT *, 'Positive'
END IF
END DO
Fortranはモジュールプログラミングのために関数とサブルーチンの定義を許可します。
FUNCTION square(x)
REAL :: square
REAL, INTENT(IN) :: x
square = x * x
END FUNCTION square
デフォルトでは、Fortranには「I」、「J」、「K」、「L」、「M」、または「N」で始まる名前の変数は暗黙的にINTEGERとされるルールがあります。これは明確さのためにオーバーライドできます。
IMPLICIT NONE ! 暗黙の型付けを無効にします
INTEGER :: I
REAL :: R
Fortranは条件に基づいて繰り返し実行するためのdo-whileループをサポートしています。
i = 1
DO WHILE (i <= 10)
PRINT *, i
i = i + 1
END DO
Fortranには、構造体のようなデータ定義を可能にする強力なユーザー定義型である派生型があります。
TYPE :: Person
CHARACTER(len=20) :: name
INTEGER :: age
END TYPE Person
TYPE(Person) :: p1
Fortranはデータと手続きをカプセル化するためのモジュールをサポートし、コードの再利用と整理を促進します。
MODULE myModule
CONTAINS
SUBROUTINE mySubroutine()
! 実装
END SUBROUTINE
END MODULE
Fortranはポインタをサポートしており、Cのような言語と同様に動的メモリ管理を容易にします。
REAL, POINTER :: pA
ALLOCATE(pA(10)) ! 動的に配列を割り当てます
FortranにはCとの相互運用性を生み出す機能があり、混合言語プログラミングを可能にします。
INTERFACE
FUNCTION c_function(x) BIND(C, NAME="c_function")
INTEGER(C_INT) :: c_function(INTEGER)
END FUNCTION c_function
END INTERFACE
最も人気のあるFortranコンパイラには以下が含まれます:
Fortranは他の言語ほど現代のIDEと一般的に関連付けられていませんが、いくつかのIDEがサポートしています:
Fortranプロジェクトのビルドは、通常、.f、.f90、または.f95拡張子のソースファイルを作成し、Fortranコンパイラを使用してコンパイルすることを含みます。典型的なコマンドは次のようになります:
gfortran -o my_program my_source.f90
Fortranは科学計算、数値気象予測、気候モデリング、計算物理学、計算化学、バイオインフォマティクスで広く使用されています。特に重い数値計算やシミュレーションにおけるパフォーマンスで知られています。
Fortranの科学技術プログラミングにおける主な競合には以下が含まれます:
Fortranには、レガシーコードをより現代的な言語に変換したり、既存のコードを最適化したりするのに役立ついくつかのソースからソースへの翻訳ツールがあります。いくつかのツールには以下が含まれます:
これらのツールは、古いFortranバージョンやまったく異なるプログラミングパラダイムからの移行を容易にし、パフォーマンスと機能を維持するのに役立ちます。