Fortran
Fortran
パラダイム 構造化プログラミング、オブジェクト指向プログラミング、手続き型プログラミング、ジェネリックプログラミング、命令型プログラミング、配列プログラミング ウィキデータを編集
登場時期
  • 1957年 ウィキデータを編集
開発者 IBM、ジョン・バッカス ウィキデータを編集
最新リリース Fortran 2023 / 2023年11月17日
型付け 強い静的型付け
主な処理系 Absoft, Cray, CUDA, Fortran Builder, GFortran, G95, Intel, Lahey/Fujitsu, Open Watcom, Pathscale, PGI, Silverfrost, Sun, XL Fortran, Visual Fortran ほか
影響を受けた言語 Speedcoding ウィキデータを編集
影響を与えた言語 ALGOL 58, BASIC, PL/I, C
プラットフォーム z/OS, z/VM, z/VSE, MCP, VOS3, ACOS, GCOS, VMS, OS/400, UNIX, Linux, Windows, Mac OS, CP/M, MS-DOS ほか
ライセンス MIT License ウィキデータを編集
ウェブサイト
拡張子 f、for、f90 ウィキデータを編集
テンプレートを表示

■カテゴリ / ■テンプレート

1956年に発行された最初のFortran解説書『The Fortran Automatic Coding System for the IBM 704』

Fortran(フォートラン)は科学技術計算に向いた手続き型プログラミング言語。1954年にIBMのジョン・バッカスが考案したコンピュータ用で世界最初の高水準言語であり、その後も改訂されて使用されている。

概要

1956年に最初のマニュアルがリリースされ、1957年にIBM 704用の最初のコンパイラがリリースされた。名前 Fortran は formula translation(数式の変換)に由来し、FORTRAN 77 や Fortran 90 などの末尾の数字は規格が制定された年を示している。

Fortran は科学技術計算に向いた手続き型プログラミング言語であり、その長い歴史の間に開発された非常に多くの数学関数やサブルーチンを数値解析ソフトウェアとしてもっている。また、並列計算の並列性を明示的に書くことができるので最適化が行いやすく、したがって他の言語より高速であるなどの理由から[1]、数値予報および気候モデル、構造力学における有限要素法、計算流体力学、計算物理学、計算機化学、計量経済学、動物と植物の品種改良などの大規模な計算を行う分野において、スーパーコンピュータで使われている[2]。

ちょうどC言語に対するC++言語のように、Fortran 90/Fortran 95 の言語仕様は、FORTRAN 77 の頃と比べればかなり拡張され進歩したものとなっている。最新のソースコードは、初期のものと比較するとほとんど別の言語のように見える。初期の頃は、変数名が大文字で6文字までであり、動的な記憶領域の確保ができないなど多くの制約があったが、それらの制限はなくなり、Fortran 77 から構造化プログラミングが導入され、Fortran 90 からモジュラープログラミング、配列演算とユーザー定義総称関数が、Fortran 95 からHigh Performance Fortranが、Fortran 2003 からオブジェクト指向が、Fortran 2008 からはコンカレント・コンピューティング(並行計算)が導入された。

言語名は大文字 FORTRAN でなく Fortran とつづることが、1990年にISOの会議で合意されている[3]。 なお、大文字で FORTRAN と表記した場合は FORTRAN 77 以前の FORTRAN を指し、Fortranと表記した場合は Fortran 90 以降を指すことがある。

Fortranの特徴

Fortran 90/95の特徴

Fortran 90/95の特徴は、次のとおりに要約される[4]。

FORTRAN 77の特徴

広く使われていたFORTRAN 77 の特徴は、以下のように要約される。

数式の計算が簡便に記述できる
ほぼ数学の数式通りに計算式を記述できる。もっともこの特徴は他に計算向きの高級言語がなかった時代の話であり、現代の水準では「プログラミング言語における標準数式表現の始祖」といった方が当たっている。
入出力が容易
簡単に出力形式を定義できるFORMAT文や、実際の出力デバイスを意識しないで済む入出力文がある(C言語の標準入出力と似た概念である)。
スタック指向/構造化指向の言語ではない
COMMON文、BLOCK DATA文やSAVE文など、データを静的に割り当てることを前提としている。
プログラムの書式が固定形式である
プログラム記述の方法がカラム位置に依存している(一部の実装では拡張されている)。

Fortranの歴史

パンチカードに記されたFORTRANのコード。カラム1~5、6、73~80が制御用に確保されている。

ジョン・バッカスは1953年末、メインフレームコンピュータIBM 704のプログラムを開発するにあたり、アセンブリ言語に代わるものを開発することをIBMの上司に提案した。歴史的なFORTRAN開発チームはRichard Goldberg、Sheldon F. Best、Harlan Herrick、Peter Sheridan、Roy Nutt、 Robert Nelson、Irving Ziller、Lois Haibt、David Sayreというメンバーで構成された[5]。

The IBM Mathematical Formula Translating System のドラフト仕様は1954年中旬に作成された。1956年10月にFortranの最初のマニュアルが作成され、コンパイラは1957年4月に完成した。顧客はアセンブリ言語で記述されたコードに匹敵するパフォーマンスが得られない限り高級言語を採用しないので、最初から最適化コンパイラが開発された。

この新しい方法がハンドアセンブルより高速に動作するかどうかには疑いの目があったが、プログラム中の命令数を1/20に削減できるので急速に受け入れられていった。IBMの社内誌であるThinkに掲載された1979年のインタビューでバッカスは「私がこの仕事をしたのは面倒くさがりだったからです。私はプログラムを書くことが好きではなかったので、IBM 701でミサイルの軌道計算プログラムを開発したときに、プログラムの開発を簡単にするためにプログラミングシステムを作り始めました。」[6]と語っている。

Fortranは科学者の間で数学を応用したプログラムの記述に広く用いられたことから、より高速で効率的なコードを出力しようとする原動力となった。また、ライブラリでなく言語として複素数型をサポートしたことは、電気電子工学における動的特性の計算などに代表される科学や工学分野のプログラムを書きやすくした。

1960年までに様々なバージョンのFORTRANがIBM 709、IBM 650、IBM 1620、IBM 7090で動作していた。FORTRANのユーザー数は急増し、コンピューターメーカーがFORTRANコンパイラをこぞって提供したので、1963年までには40を超えるFORTRANコンパイラが存在していた。こうしたことから、FORTRANはアーキテクチャの異なる様々なコンピュータで広くサポートされた最初の言語と言える。

Fortran開発の歴史は、初期のコンパイラ技術の歴史そのものといえる。Fortranで効率的なコードを出力したいという強い要求からコンパイラによる最適化技術が大きく進歩した。

FORTRAN

IBM 704 メインフレーム

IBM 704用に開発された最初のFORTRANは32の命令をもっていた。

IBM 1401版FORTRAN

IBM 1401版は革新的な63 phases[7]のコンパイラであり、わずか8k語の磁気コアメモリで動作する。コアに記録されたプログラムが段階的に実行可能なコードへと変換されて上書きされる。変換されたコードは機械語ではなく、UCSD PascalのPコードが生まれるよりも20年も前ながら、中間コードを利用していた。

FORTRAN II

IBMのFORTRAN IIは1958年に開発された。主な改良点は手続き型プログラミングのサポートであり、サブルーチンや関数を定義できるようになった。

その後、FORTRAN IIのデータ型として、DOUBLE PRECISION(倍精度型)とCOMPLEX(複素数型)が追加された。

FORTRAN III

IBMは1958年にFORTRAN IIIを開発していた。いくつかの新機能に加えインラインアセンブラが可能であった。しかしながらこのバージョンは販売されなかった。704 FORTRANやFORTRAN IIと同様に、FORTRAN IIIにも移植の妨げになるような機種依存の機能があった。他のベンダーから販売されていたFORTRANも初期は同様の問題を抱えていた。

FORTRAN IV

IBMは1961年に顧客の要望を受けFORTRAN IVの開発を開始した。READ INPUT TAPEのようなFORTRAN IIの機種依存部分を削除したほか、LOGICAL(論理型)、論理演算、算術IF文の代替となる論理IF文が加えられた。この時のターゲットマシンは36ビットのワードマシンだったので、整数値は235の大きさの範囲で定義されていた。また、実数の精度は227、倍精度実数の精度は254までだった。FORTRAN IVは1962年にIBM 7030(通称ストレッチ)用がリリースされ、後にIBM 7090版とIBM 7094版がリリースされた。

1965年には国家規格であるANSI X3.4.3 FORTRANに準拠した。

FORTRAN 66

American Standards Association(現ANSI)がFortranの米国規格を委員会で制定するようになったことはFortranの歴史の要である。1966年に2つの異なる言語が制定された。一つは当時既にデファクトスタンダードであったFORTRAN IVを基にしたFORTRANであり、もう一つはFORTRAN IIを基にして機種依存部分を取り除いたBasic FORTRANである。最初に制定されたFORTRANの規格は後にFORTRAN 66と呼ばれた。

FORTRAN 77

FORTRAN 66 規格のリリース後、コンパイラ・ベンダーは多くの拡張を"標準Fortran"に導入し、1966の規格の改訂を始めるようにANSIを促した。この改訂は1977年に制定され、最終的な改訂案は1978年4月に新しいFORTRAN標準として承認された。この新しい標準はFORTRAN 77として知られ、FORTRAN 66後の多くの変更を追加し、多くの重要な機能を加えた:

この規格の改訂において、多くの機能は除去されるか変えられて、以前の標準に合致していたプログラムの多くはおそらく無効になった。この時点で除去はX3J3の代替だけが許容された。だからコンセプト "不賛成"はANSI標準においては利用できなかった。しかし、コンフリクトリストの24アイテム(Appendix A2 of X3.9-1978を見よ)ループホールスとパスロジカルケースは以前の標準規格から許容されたが、しかし滅多に使用されない。少数の機能は慎重に除去された。

GREET = 12HHELLO THERE!
DIMENSION A(10,5)
Y= A(11,1)

Fortran 90

一般にFortran 90 として知られている規格は、大幅に発表が遅れたもののFORTRAN 77の正当な継承者であり、最終的に1991年にISO規格、1992年にANSI規格としてリリースされた。この抜本的な改訂では1978年のFORTRAN 77規格制定からのプログラミング技術における大幅な変化を反映するために、以下の多くの新しい機能が加えられた

if (x<0) then
x=0
end if
abcdefghijklmnopqrstuvwxyz12345=0.0e0
! これは"!"を用いたコメントです
x(1:n)=r(1:n)*cos(a(1:n))
integer :: a(10)
real(8) :: b(10)
a = f(x)
where (a > 0)
  b = -1.0
elsewhere
  b = 1.0
end where
function sample(x) result(y) !配列yを返す
  integer, parameter :: nn = 4
  real :: y(nn) = (/ 1, 2, 3, 4 /) !配列のコンストラクタと定数による初期化
  !...
end function sample
module my_lib !モジュール
interface
  function sample(x)
    real, intent(in) :: x(:) !コンパイル時に変数の型の整合性とデータの入出力方向がチェックされる。
    !...
  end function sample
end interface
end module
real, allocatable :: temp(:)
allocate(temp(nn))
deallocate(temp)
do i = 1, nn
  if (b(i) /= 0) then
    a(i) = 1.0 / b(i)
  else
    exit
  end if
end do
select case (sw)
case ('++')
  a = a + 1
case ('--')
  a = a - 1
case default
  a = 0
end select
a = 1.0e0_kind(1.0d0)

削除または時代遅れとされた機能の一覧

以前のバージョンとは異なり、Fortran 90は、何の機能も削除しなかった。(Appendix B.1には、「この規格の、削除した機能のリストは空である。」と記載されている)つまり、FORTRAN 77に準拠したプログラムは、Fortran 90にもまた準拠している。そして、両方の規格で、その動作が定義づけられた項目は使用可能でなければならない。一部の機能はFortran 95で「削除」され、また機能の小さな部分は「時代遅れ」と認定されて将来の規格で除去されることが予定された。

削除または時代遅れとされた機能の一覧
時代遅れの機能 例 状態 / Fortran 95での予定
算術 IF 文
      IF (X) 10, 20, 30
非-整数型の DO パラメータ あるいは制御変数
      DO 9 X= 1.7, 1.6, -0.1
削除
DOループの末端の共有 もしくは
END DO あるいはCONTINUE以外の末端
 
      DO 9 J= 1, 10
         DO 9 K= 1, 10
9           L= J + K
ブロック外部からの

END IFへのブランチ

66    GO TO 77 ; . . . 
      IF (E) THEN ;      . . . 
77    END IF
削除
Alternate return
      CALL SUBR( X, Y *100, *200 )
PAUSE文
      PAUSE 600
削除
ASSIGN statement
  と assigned GO TO statement
100   . . .
      ASSIGN 100 TO H
      . . .
      GO TO H . . .
削除
Assigned FORMAT specifiers
      ASSIGN F TO 606
削除
H 編集子
606   FORMAT ( 9H1GOODBYE. )
削除
計算 GO TO 文
      GO TO (10, 20, 30, 40), index
(時代遅れ)
文関数
      FOIL( X, Y )= X**2 + 2*X*Y + Y**2
(時代遅れ)
DATA 文
  among executable statements
      X= 27.3

      DATA A, B, C / 5.0, 12.0. 13.0 /. . .
(時代遅れ)
CHARACTER* の形式による文字型宣言
      CHARACTER*8 STRING  ! Use CHARACTER(8)
(時代遅れ)
Assumed character length functions
      CHARACTER*(*) STRING
固定長形式のソースコード * 第1カラムが * あるいは ! あるいは C である行は注釈行.
C   第6カラムが空白でなければ継続行.文番号は先頭から5桁目までに書く。

"Hello world"の例

program helloworld
  print *, "Hello, world."
end program helloworld

Fortran 95

地球シミュレータスーパーコンピュータ

Fortran 95は、マイナーな改訂版である。ほとんどは、Fortran 90規格の、いくつかの大きな問題を解決するためのものである。それにもかかわらず、Fortran 95にもまた年号が付加されている。そのことは、Fortranの拡張として定義される並列言語、HPF(High Performance Fortran:ハイ・パフォーマンスFortran)の機能の一部導入によることは明白である。なお、本格的なHPFは、地球シミュレータ等で使用されている[2]。

多くの内部手続は拡張された。たとえばmaxloc 内部手続にdim引数が追加された

Fortran 90では時代遅れとされた機能のいくつかについては、Fortran 95では削除された。

Fortran 95への重要な追加は、一般にはAllocatable TRとして知られる、ISO technical report、TR-15581: Enhanced Data Type Facilitiesである。この仕様は、Fortran 2003準拠のFortran コンパイラより前に、ALLOCATABLE 配列の強化した用法を定義した。そのような用法は、手続のダミー引数リストとしての派生型コンポーネントALLOCATABLE配列と、関数の返却値を含む。ALLOCATABLE配列は、POINTER-ベース・配列よりも好ましいものである。なぜならば、ALLOCATABLE 配列では、有効域から出るときに、Fortran 95システムによる自動的なdeallocateを保証しているので、メモリリークを起こす心配がないからである。

エイリアシングは配列の参照において最適化の障害にならず、Fortranコンパイラがポインタ-ベース・配列よりも高速なコードを生成することを可能にする。

他の重要なFortran 95への追加は、ISO technical report TR-15580: 浮動小数点例外処理である。一般にはIEEE TRとして知られており、この仕様はIEEE 浮動小数点演算と例外処理を定義する。

条件付コンパイルと可変長文字列

必須のベース言語(ISO/IEC 1539-1:1997に定義)以外に、Fortran 95言語も以下の2つのオプショナルなモジュールを含む。

  • 可変文字列(ISO/IEC 1539-2 : 2000)
  • 条件付コンパイル(ISO/IEC 1539-3 : 1998)

両者は、マルチパート国際標準を構成する(ISO/IEC 1539)。規格の開発者は、「オプショナル・パートは必要なものを完備した機能を記述している、それは多くのコンパイラの実装者と利用者から要求されてきたものである。しかし、それらは、全てのFortran標準に合致するコンパイラは十分な一般性を持たないと考えられていた。それにもかかわらず、もし標準に合致したFortranがそのようなオプションを提供するならば、『それらの機能は、標準規格の適切なパートに記述に従って提供されなければならない。』」と述べている。

Fortran 2003

Fortran 2003はメジャーな改訂であり、たくさんの新しい機能を導入した。 Fortran2003における新しい機能の包括的なサマリーは、Fortran Working Group (WG5)のオフィシャルWebサイトから得ることができる[8]。

この記事によれば、このバージョンが含む大幅な強化は以下の通りである。

Fortran 2003 への重要な追加は、ISO technical report TR-19767である。

Fortranにおけるモジュール機能の強化。このレポートは、submodulesを提供する。これは、FortranのモジュールをよりModula-2言語のモジュールに近づける。これらは、Ada言語のプライベート・チャイルド・サブユニットに似ている。これは分離したプログラムユニットとして表現すべきモジュールの仕様と実装を可能にし、大規模なライブラリのパッケージ化を改善し、インターフェース定義を公開しても企業秘密を保持することを可能にし、コンパイレーション・カスケードを防ぐ。

Fortran 2008

最新の規格であり一般にはFortran 2008として知られているISO/IEC 1539-1:2010は2010年9月に承認された[9]。Fortran 95と同様に、これはマイナー・アップグレードである。Fortran 2003の明確化と訂正と共に、新しい特長も導入された。新しい特長は、以下を含む

ファイナル・ドラフト・スタンダード(FDIS)は、ドキュメントN1830として利用できる[10]。

Fortran 2008における重要な追加は、ISOテクニカルスペシフィケーション(TS) 29113のFortranにおけるC言語とのより高いインターオペラビリティであり[11][12]、2012年5月のISOの承認に向けてまとめられた。C言語の配列へのFortranアクセスに関してタイプとランクを無視する仕様が加えられた。

Fortran 2018

Fortran 2018の最新版は、以前はFortran 2015と呼ばれていた[13]。大きな改訂が行われ、2018年11月28日にリリースされた[14]。

Fortran 2018には、それ以前に公開された以下の2つの技術仕様が含まれている。

追加の変更と新機能には、ISO/IEC/IEEE 60559:2011(2019年時点のIEEE浮動小数点数仕様の最新版)のサポート、16進の入出力、IMPLICIT NONEの拡張など、様々な変更が含まれている[17][18][19][20]。

Fortran 2023

Fortran 2023 (ISO/IEC 1539-1:2023) は、2023年11月に発行された[21]。対応するJIS規格は現在のところ発行されていない。Fortran 2023はFortran 2018のマイナーな拡張であり、Fortran 2018の誤りまたは欠落の修正と、いくつかの小さな機能の追加に重点が置かれている。非公式な説明が、Metcalfら (2023) の書籍[22]にある。

次のFortran規格

Fortran 202Y と仮称されている次の Fortran 規格は、2028年ごろに発行される見通しであり、ISO/IEC JTC 1/SC 22/WG 5 で具体案の検討が進められている[23]。日本では、情報処理学会 情報規格調査会 SC 22/Fortran WG小委員会を中心に、WG 5 に進言するためのオープンな議論が行われている[24]。

科学分野と工学分野での利用

1968年にBASICの作者等によって書かれた専門雑誌の記事でもすでに「旧式の(old-fashioned)プログラミング言語」と記述されていたが[25]、Fortranは現在でも数十年に渡って使用されており、特に科学や工学のコミュニティでは、Fortranで書かれたソフトウェアが日常的に幅広く利用されている[26]。ジェイ・パサコフ(英語版)は1984年に「物理学と気象学の学生はFORTRANを必ず学ぶ必要がある。大部分の成果がFORTRANで書かれており、科学者たちがPascalやModula-2などの他の言語に移行する可能性は極めて低い。」と書いている[27]。1993年、Cecil E. Leithは、FORTRANを「科学計算の母語」であると評し、他の言語によって置き換えられる可能性は「永遠の希望であり続けるだろう」と述べている[28]。

言語仕様の変遷

FORTRAN 66以降、ISO、ANSI、JISで仕様が制定されている。Fortranの言語仕様は、年代によってかなり変化して来ている。他のプログラミング言語で実装された構造化プログラミングの機能などがどんどん取り入れられて来ているからである。

初期 (FORTRAN 66)

1966年にANSI X3.9-1966が制定され、JISとしては1967年に制定された。この時は、以下の3つの水準ごとに独立したJISが制定された。共通したタイトルは「電子計算機プログラム用言語 FORTRAN」だった。以下に水準間のおおよその違いを記す。

なお、1971、1976年に若干の改訂がなされている。

FORTRAN 77時代

国際標準化機構(ISO)は、米国規格協会(ANSI)の X3J3 が作成した FORTRAN の規格 X3.9-1978 を ISO 1539-1980 として定めた。基本水準(subset language)と上位水準(full language)の2種類の水準からなっていた。これを基にして、同じく2水準の JIS C 6201-1982 が制定された。なお、1987年に、JISの分類が変更になり、この規格は JIS X 3001-1982 となった。内容には変更はない。

Fortran 90時代

FORTRAN 77を基に他の言語の特徴を組み込み、言語仕様を近代化しようとしたが、そのため仕様がなかなか決まらず、1991年に ISO/IEC 1539:1991として制定された。JISではそれを受け、JIS X 3001:1994が制定された。

Fortran 90 から規格上の言語の呼称が頭文字のみを大文字とした“Fortan”に変更された[29]。

Fortran 95時代

JIS X 3001:1998は,Fortran 95と通称される規格を技術的内容および構成を記述言語以外は変更することなく作成された。該規格は一部例外を除きJIS X 3001 1-1994の上位互換拡張である。

Fortran 2003時代

JIS X 3001:2009は,Fortran 2003と通称される規格を技術的内容および構成を記述言語以外は変更することなく作成された。当該規格は一部の例外を除いてJIS X 3001-1:1998の上位互換拡張である[30]。

Fortran 2008時代

対応するJISは制定されなかった。

Fortran 2018時代

JIS X 3001-1:2023(2023年現在の最新改正版)は,Fortran 2018と通称される規格を技術的内容および構成を記述言語以外は変更することなく作成された[31]。

Fortran と教育

教育向けコンパイラ

Fortranは、情報処理分野で広く使われていたため、学校や会社の教育(情報処理技術者向け教育)で利用された。教育向けには、より詳細なエラー情報を出すための拡張がWaterloo大学でWATFOR(後にWATFIV)コンパイラとして実装された。この実装は日本の大学でも使われた。

Fortranとスーパーコンピュータ

Fortranは科学技術計算用の言語なので、スーパーコンピュータでのプログラミング言語としてよく用いられる。実際、多くのスーパーコンピュータでベンダーが主に注力して提供されている言語は、C/C++およびFortranである。

C言語と比較すると、Fortranはスタック等を使わずに、コンパイル時に静的に記憶領域を確保するのが基本であった。そのため、自由度が高くあらゆる状況を想定しなければならないC言語と比べるとコンパイラはコードを最適化しやすいという利点がある。

Fortranの主な用途である科学と技術用の計算では配列を用いた演算が基本であり、ベクトル型スーパーコンピュータは、Fortranを使ったプログラムで使用することが多い。そこで、スーパーコンピュータの高速演算機能を有効に使うための工夫がなされた。その1つの例としては、自動ベクトル化機能である。ベクトル型のスーパーコンピュータは、多くの演算を同時に行うベクトル演算機能がハードウェアで提供されている。この機能を有効に使うために、FortranのDOループをベクトル演算装置で演算させるために、自動的にベクトル命令にする機能が提供された。また、DOループ内のベクトル演算に適さないものをDOループ外に追い出す機能などもある。たとえば、

DO I = 1, N
  A(I) = B(I) * C(I)
END DO

のようなDO構文は、ほとんどの場合、1から数個のベクトル演算命令にコンパイルされる。そのほかにもDOループの中にIF文を含むような例、たとえば、

DO I = 1, N
  IF (A(I) <= LIMIT) THEN
    B(I) = A(I) * Z
  END IF
END DO

のようなものもベクトル化できる場合がある。これは、いったんAの各要素がLIMIT以下かどうかを示すマスクベクトルを作成して、Aという配列(=ベクトル)に、変数Zの値を乗じるとき、マスクベクトルを参照するベクトル演算を行うことで、DOループをベクトル化する。

このような作業は、すべてコンパイラが行い、利用者にできるだけ負担をかけないようにしている。しかし、より高度なベクトル化を行うために、最適化を行う支援ツールが用意されている場合もある。

Fortranと日本語

コンピュータ上で日本語の文字を扱えるようになると、FORTRANでも日本語を扱う需要が出てきた。そのため、各社(メインフレームを作成していたメーカ)では、独自に言語仕様に日本語の文字を扱えるように拡張した。そのため、各社で日本語の扱い方が異なる事態になった。そこで、JEIDAでは1985年に、JEIDA-42で日本語FORTRANを策定した。

FORTRANで日本語の文字を扱う場合、識別子である変数名、仮引数名、プログラム名、関数名、サブルーチン名、共通ブロック名等には日本語の文字は使えず、データとしての日本語の文字列を扱うための専用の型(日本語型)、日本語の文字列を入出力するためのFORMAT文の編集子の拡張が行われた。

Fortranベースの言語

FORTRAN 77が登場する前にいろいろと作られたプリプロセッサはFortranをベースとしてよりプログラムが読みやすく書きやすい言語の形式を提供するために広く使われた。プリプロセッサで処理されたコードは、標準のFORTRANコンパイラを備えた任意のマシンに対してコンパイルすることができる利点を持つ。これらのプリプロセッサは通常、構造化プログラミング、6文字よりも長い変数名、追加のデータ型、条件付きコンパイル、さらにはマクロ機能などをサポートしていた。

ポピュラーなプリプロセッサとしてFLECSとiftran、MORTRAN、SFtran、S-Fortran、Ratfor、Ratfivがあった。例えば、RatforとRatfivはCライクな言語を実装して、標準的なFORTRAN 66コードを出力した。

LRLTRANは、ローレンス放射線研究所で、ベクトル演算および動的な記憶、システムのプログラミングをサポートする他の拡張機能を提供するために開発され、ディストリビューションにはLTSSオペレーティングシステムが含まれていた。Fortran 95規格は、任意の条件付きコンパイルの機能を定義するオプションパート3を備えている。この機能は、しばしば 『CoCo』と呼ばれている。 SIMSCRIPTは、大規模な離散システムのモデリングとシミュレーションのためのアプリケーションに特化したFortranのプリプロセッサである。

また多くのFORTRANコンパイラは、Cプリプロセッサのサブセットを取り込んだ。 Fortran言語の進歩にもかかわらず、プリプロセッサは条件付きコンパイルとマクロ置換のために使用され続けている。

プログラミング言語Fは、FortranのEQUIVALENCE文などの、冗長、非構造化、非推奨な機能を削除したFortran 95のクリーンなサブセットとして設計された。言語FはFortran 90で追加された配列演算の機能を使い、FORTRAN 77とFortran 90で追加された制御文を用い、構造化プログラミングのために廃止された制御文を削除した。設計者は言語Fを 『特に教育や科学技術計算に適した、構造化された配列プログラミング言語である。』 と述べている[32]。しかしサブセット言語であるから,旧来のあるいはFで除かれた機能を含むFortranのソースコードは受け付けないため、実務用には普及しなかった。

HPF(High Performance Fortran)というFortran拡張系の言語もあるが、これもほぼ廃れた。

コンパイラディレクティブをFortran言語のソースコードに付加することでスレッド並列化をコンパイラに対して明示的に指示する、OpenMPやOpenACCなどの一種の言語拡張が近年盛んである。 CUDA Fortran[33]もNvidia社のGPUに特化してFortran言語の仕様をベースにして独自拡張されたものである。

主な処理系

Windows

フリーソフト
商用ソフト

Linux

無償で利用できるコンパイラ
有償の商用コンパイラ

その他

出典

  1. ↑ 陰山聡『Fortran90/95入門』、なぜFortran90/95か?
  2. 1 2 HPF推進協議会 (HPFPC)
  3. ↑ ISO/IEC JTC1/SC22/WG5-N489 (2 March 1990). Resolutions. London WG5 Meeting, February 26 - March 2, 1990. wg5-fortran.org. ISO/IEC JTC 1/SC 22/WG 5. 2024年3月6日閲覧。
  4. ↑ 牛島省 2020, はじめに.
  5. ↑ History of FORTRAN and FORTRAN II — Software Preservation Group
  6. ↑ Fortranの開発者ジョン・バッカスが死亡 - Gadgets - MSNBC.com
  7. ↑ 現代の我々がいう所の言語処理系のパスではない https://ibm-1401.info/1401-IBM-Systems-Journal-FORTRAN.html を参照
  8. ↑ Fortran Working Group (WG5).It may also be downloaded as a PDF file or gzipped PostScript file, FTP.nag.co.uk
  9. ↑ N1836, Summary of Voting/Table of Replies on ISO/IEC FDIS 1539-1, Information technology - Programming languages - Fortran - Part 1: Base language ftp://ftp.nag.co.uk/sc22wg5/N1801-N1850/N1836.pdf (PDF, 101 KiB)
  10. ↑ N1830, Information technology, Programming languages, Fortran, Part 1: Base language ftp://ftp.nag.co.uk/sc22wg5/N1801-N1850/N1830.pdf (PDF, 7.9 MiB)
  11. ↑ ISO page to ISO/IEC DTS 29113, Further Interoperability of Fortran with C
  12. ↑ Draft of the Technical Specification (TS) 29113 ftp://ftp.nag.co.uk/sc22wg5/N1901-N1950/N1917.pdf (PDF, 312 kiB)
  13. ↑ “Doctor Fortran in "Eighteen is the new Fifteen"”. Software.intel.com. 20 November 2017閲覧。
  14. ↑ “Fortran 2018”. ISO. 30 November 2018閲覧。
  15. ↑ “Further Interoperability with C”. ISO. 20 November 2017閲覧。
  16. ↑ “Additional Parallel Features in Fortran”. ISO. 20 November 2017閲覧。
  17. ↑ “The New Features of Fortran 2015”. ISO. 23 June 2017閲覧。
  18. ↑ “Doctor Fortran in "One Door Closes"”. Software.intel.com. 21 September 2015閲覧。
  19. ↑ “Doctor Fortran Goes Dutch: Fortran 2015”. Software.intel.com. 19 November 2014閲覧。
  20. ↑ PL22.3; WG5 (2018年10月9日). “Fortran 2018 Interpretation Document” (pdf). J3. 2024年2月28日閲覧。内部資料。
  21. ↑ “Fortran 2023”. JTC1/SC22/WG5. ISO. 2024年2月28日閲覧。
  22. ↑ Metcalf, Michael; Reid, John; Cohen, Malcolm; Bader, Reinhold (2023). Modern Fortran explained : incorporating Fortran 2023 (Sixth ed.). Oxford. ISBN 978-0-19-887657-1. OCLC 2023946356
  23. ↑ “Documents”. JTC1/SC22/WG5. ISO. 2024年2月28日閲覧。
  24. ↑ 情報処理学会 情報規格調査会 SC 22/Fortran WG小委員会 (2024年1月24日). “Fortran 202Y規格について議論しよう”. GitHub. 2024年2月28日閲覧。
  25. ↑ Kemeny, John G.; Kurtz, Thomas E. (11 October 1968). “Dartmouth Time-Sharing”. Science 162 (3850): 223–228. doi:10.1126/science.162.3850.223.
  26. ↑ Phillips, Lee. “Scientific computing's future: Can any coding language top a 1950s behemoth?”. Ars Technica. 8 May 2014閲覧。
  27. ↑ Pasachoff, Jay M. (April 1984). “Scientists: FORTRAN vs. Modula-2”. BYTE: pp. 404 6 February 2015閲覧。
  28. ↑ Galperin, Boris (1993). “26”. Large Eddy Simulation of Complex Engineering and Geophysical Flows. London: Cambridgey. p. 573. ISBN 978-0-521-43009-8
  29. ↑ ISO/IEC 1539 : 1991 (E) Fortran, ISO/IEC, (1991-07-01)
  30. ↑ JIS X 3001-1:2009「プログラム言語Fortran――第1部: 基底言語」(日本産業標準調査会、経済産業省)
  31. ↑ JIS X 3001-1:2023「プログラム言語Fortran―第1部: 基底言語」(日本産業標準調査会、経済産業省)
  32. ↑ F Programming Language Homepage
  33. ↑ NVIDIA CUDA Fortran Programming Guide

参考文献

関連項目

外部リンク

⌬ Phoenix Mesh CID: 未登録 IPFS未登録 📡 0ピア N=1 CRITICAL PQS A90