メインメニューを開く

MonoBook β

Fortran

FORTRAN(読み:ふぉーとらん)とは、ジョン・バッカスIBMの愉快な仲間たちが開発したプログラミング言語である。


概要編集

IBMとFORTRANには何も面白いところはない。青いネクタイを装着せずにFORTRANを書くのはシンタックスエラーとなる。

表記について編集

フォートランの英語表記には「FORTRAN」と「Fortran」がある。 フォートランはソースコードを紙に書いてパンチカードに起こしていた古代から、統合開発環境を用いる現代まで日々進化しつづけ、時代とともに文法なども変化してきた。そのため近代的なフォートランでは初期の原型をとどめておらず既に別のプログラミング言語とも言える状態となっている。

このためFortran 90の制定にあたり古代と現代の明確な区別として、「FORTRAN」という表記はFORTRAN 77までの古い仕様を指し、「Fortran」という表記はFortran 90以降の新しい仕様を指すという取り決めが行われた。

並列処理編集

FORTRANは基本的な演算や条件分岐などは何の特徴もない平凡なプログラミング言語であるが、配列の演算は以下のように範囲指定で一気に計算が行えるという特徴がある。この記述だけで賢いコンパイラは自動的に並列処理としてくれる。このためプログラマーCPUのコア数だのスレッド数だのと言った細かいことを意識しなくてもよく、もう規模が大きすぎて人力ではそれらを把握しきれないスーパーコンピューターなどの世界では人気が高いという。

program array
    ! C言語のように変数の型宣言を強制させる。
    !   fortranでは初期状態で変数の型宣言が不要であり、変数名の1文字目によって整数になったり実数になったりするが、
    !   いわゆる動的言語の同じくタイプミスでもエラーにならずバグの温床になるので可能な限り以下の一行は含めよう。
    implicit none

    ! 配列を宣言する。
    integer a(10), b(20), c(30)

    ! 並列処理
    ! 配列を初期化する。
    ! 添字なしで配列に代入すると全部に入る。
    a = 0    ! 配列全部に0を代入する。
    b = 1    ! 配列全部に1を代入する。
    c = 2    ! 配列全部に2を代入する。

    ! 並列処理
    ! 配列bの添字11から20までと、配列cの21から30までを足して、配列aの1から10に格納する。
    ! fortranの添字は1から始まる。C言語から来た人は注意。
    a(1 : 10) = b(11 : 20) + c(21 : 30)

    ! 配列の中身を表示する。
    print *, a

end program array

上記の演算部分をC#で書くと以下のような感じである。

Parallel.For( 0, 10, i => a[i] = b[i + 10] + c[i + 20] );

C言語Java並列処理を考慮せず書くと以下のような感じである。

for (i = 0; i < 10; i++)
{
    a[i] = b[i + 10] + c[i + 20];
}

主な仕様編集

Fortranと一言でいっても時代とともに進化しており、文法なども変化している。

主な実装編集

文法編集

関連項目編集

参考文献編集