プログラミング言語 Fortran

概要

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

Do-Whileループ

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コンパイラには以下が含まれます:

統合開発環境(IDE)

Fortranは他の言語ほど現代のIDEと一般的に関連付けられていませんが、いくつかのIDEがサポートしています:

プロジェクトのビルド

Fortranプロジェクトのビルドは、通常、.f、.f90、または.f95拡張子のソースファイルを作成し、Fortranコンパイラを使用してコンパイルすることを含みます。典型的なコマンドは次のようになります:

gfortran -o my_program my_source.f90

Fortranの応用

Fortranは科学計算、数値気象予測、気候モデリング、計算物理学、計算化学、バイオインフォマティクスで広く使用されています。特に重い数値計算やシミュレーションにおけるパフォーマンスで知られています。

類似言語との比較

Fortranの科学技術プログラミングにおける主な競合には以下が含まれます:

ソースからソースへの翻訳のヒント

Fortranには、レガシーコードをより現代的な言語に変換したり、既存のコードを最適化したりするのに役立ついくつかのソースからソースへの翻訳ツールがあります。いくつかのツールには以下が含まれます:

これらのツールは、古いFortranバージョンやまったく異なるプログラミングパラダイムからの移行を容易にし、パフォーマンスと機能を維持するのに役立ちます。