Fortran

提供: MonoBook
移動: 案内検索

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と一言でいっても時代とともに進化しており、文法なども変化している。

主な実装[編集]

ざっくり

製品名 対応OS ライセンス 概要
Oracle Solaris Studio Solaris, Linux フリーソフト NetBeansをベースにC言語C++FORTRANコンパイラデバッガーパフォーマンスアナライザーを搭載したもの。
PGFORTRAN Windows, Linux プロプライエタリ Visual Studioアドオンも付いてくる。
PathScale Compiler Suite Linux プロプライエタリ
Absoft Pro Fortran Windows, POSIX プロプライエタリ
G95 Windows, POSIX GPL
GFortran Windows, POSIX GPL v3
Intel Fortran Compiler Windows, Linux, Mac OS X プロプライエタリ Visual StudioやEclipseXCodeアドオンあり
Lahey Fortran Linux プロプライエタリ
Open64 Windows, POSIX GPL
FNT95 Windows プロプライエタリ
NAG Fortran Windows, POSIX プロプライエタリ
VS Fortran z/OS, z/VM プロプライエタリ IBM製の元祖Fortranのメインフレーム版である。最近ではEclipseベースのIDEが付いてる。
Force Windows フリーソフト プログラミング言語Forthと名前が似てるので注意。
XL Fortran Linux (POWERCell限定), AIX, BlueGene プロプライエタリ IBM製の元祖Fortranのスーパーコンピューター版である。最近ではEclipseベースのIDEが付いてる。

文法[編集]

関連項目[編集]

参考文献[編集]