本記事では、1954年に世界初の高水準プログラミング言語として誕生した、Fortranの概要や特徴のほか、Fortranの歴史や基本的な使い方、メリットについて詳しく解説します。
「Fortran」は、1954年にアメリカの数学者 ジョン・バッカスによって作成された、世界初の高水準プログラミング言語です。高水準プログラミング言語とは、人間が理解しやすい言語のことです。誕生してから70年以上経過している古い言語ではありますが、現在でもスーパーコンピュータや計算系のソフトウェアで使用されています。本記事では、「Fortran」の概要や特徴、歴史や使い方を解説します。
目次
「Fortran」とはどのような言語?
「Fortran」は、1954年にアメリカの数学者ジョン・バッカスによって作成された、世界初の高水準プログラミング言語です。「Fortran」は、「formula translation(数式の翻訳)」を短縮した名称であり、その名の通り科学技術計算や大規模計算に特化しています。
約70年が経過した現在でも、スーパーコンピュータや計算系のソフトウェアなどに使用されており、今後も機能が向上していくと予想されています。
「Fortran」の歴史
ここからは、約70年前に誕生した世界初の高水準プログラミング言語である「Fortran」の歴史を紹介します。
「Fortran」の歴史で大きなポイントは、以下の4点です。
- 「Fortran」は1954年に誕生した
- 「Fortran」が多くの科学者に使われはじめる
- オブジェクトの指示の考え方が導入され、「C言語」と併用できるようになる
- 今でもスーパーコンピュータや数学分野で使用されている
それぞれ解説します。
「Fortran」は1954年に誕生した
「Fortran」は、1954年に当時IBMに勤めていたジョン・バッカスによって考案・作成されました。当時は「Fortran」のような高水準プログラミング言語は存在しておらず、機械にとっては理解しやすいものの、人間が理解しにくい低水準プログラミング言語しかありませんでした。実際に当時のIBMでのプログラム開発でも、低水準プログラミング言語が採用されていました。
しかし、人間が理解しにくいことでプログラム開発にはさまざまなコストが発生していたことから、ジョン・バッカスは高水準プログラミング言語の「Fortran」の開発に踏み切ります。その後、1956年に「Fortran」のマニュアルが作成され、翌年1957年にはコンパイラが開発されました。しかし、当時は低水準プログラミング言語が主流だったため、「Fortran」はあまり普及しませんでした。
「Fortran」が使われはじめたのは、最適化コンパイラが開発されプログラム実行の高速化が実現した後のことです。
「Fortran」が多くの科学者に使われはじめる
「Fortran」は世界初の高水準プログラミング言語であり、プログラム実行速度の高速化や人間でも理解しやすい利点から、多くの科学者に使われはじめます。それからも「Fortran」はバージョンアップを続け、1966年には「Fortran66」が制定されました。
その際に、「Fortran Ⅳ」を元にした「Fortran66」と「FortranⅡ」を元にした「Basic Fortran」の2つがプログラミング言語として制定されています。そのとき、メインで使われていたのが「Fortran66」です。
さらに、1978年には「Fortran66」を改良した「Fortran77」が新しくリリースされ、多くの機能が搭載されたことで、より使いやすい「Fortran」にバージョンアップしました。
その後は「Fortran77」から「Fortran90」「Fortran95」と、さらなるバージョンアップが続いています。
オブジェクト指向の考え方が導入され、「C言語」と併用できるようになる
「Fortran」は2000年代に入り大きく成長し、改良された「Fortran2003」では、オブジェクト指向化や「C言語」との相性利用ができるようになりました。「Fortran2003」に改良されるまでの「Fortran」は、「アセンブリ言語」や「COBOL」と並べて3大言語といわれるほど代表的なプログラミング言語でした。しかし、2000年代に入ってからは、さまざまなプログラミング言語が開発されたことで、あまり開発に採用されなくなります。
それが、「Fortran2003」への改良によって、利便性や機能性を大きく向上させたため、その後も成長を続けることになったのです。さらにその後の「Fortran2008」では、モジュールという機能を使えるようにしたり、数学の計算ができる関数を増やしたりといった、処理の幅を広げる改良がされています。
今でもスーパーコンピュータや数学分野で使用されている
「Fortran」は、1954年の誕生から70年ほど経過していますが、現在でもスーパーコンピュータや数学分野などで使用されています。しかし、「Fortran」は、2000年代以降は一般にあまり使われなくなりました。その背景には、「Fortran」の機能が搭載されたプログラミング言語や、「Fortran」ができない機能を搭載したプログラミング言語が数多く誕生したことが挙げられます。
しかし、一定数の開発者からのニーズがあり、機能性も高いことから、なくなることはありませんでした。実際に、「Fortran」はプログラムの実行速度が高速だというメリットがあるため、多くの計算処理が求められる計算機科学や数学といった分野で活躍しています。今でも、スーパーコンピュータ内でのプログラミング言語として使用されることが多い言語です。
ほかにも、「Fortran」は、大規模数値計算・シミュレーション(並列化)、数値計算・シミュレーター(日並列化)、数値データ解析などの用途でも使用されています。活躍の場が多いことから、今後も使われ続けることが予想されるでしょう。
「Fortran」を使用するメリット
「Fortran」は、誕生してから約70年が経過しても、スーパーコンピュータや計算処理で使用されています。ここでは、「Fortran」にどのような特徴・メリットがあるのかを解説します。
「Fortran」のメリットは、主に以下の3つです。
- コードが読みやすい
- 段階を踏んで学習しやすい
- 歴史が長いので大量の参考書がある
コードが読みやすい
「Fortran」を使用する1つ目のメリットは、コードが読みやすい点です。「Fortran」は高水準プログラミング言語で、人が理解しやすいように書かれているため、コードが読みやすいです。
英語や記号を用いて書かれるので、普段使用している言語に表現が近くなります。したがって、プログラミング学習初心者の方でも、習得しやすい言語といえるでしょう。
段階を踏んで学習しやすい
「Fortran」は、段階を踏んで学習しやすいため、スキルや知識を身につけやすい言語です。プログラミング学習初心者が「Fortran」を学習する場合、初心者の多くがつまずきやすい「オブジェクト指向」からではなく、副関数から学習できます。
オブジェクト指向はデータとそれを操作する方法(メソッド)を1つの「オブジェクト」としてまとめるという考え方をベースにした考え方です。しかし、オブジェクト指向の概念は抽象的であり、実際のコードからは理解しにくいため、プログラミング学習初心者が学びはじめの段階でオブジェクト指向の概念を理解するのは、難しいとされます。
副関数(サブルーチン)といった基本的な概念から学びはじめることで、学習を進めた段階でより高度なオブジェクト指向の概念を理解するステップに進みやすくなるのです。
副関数への理解が深まりさまざまなプログラミングができるようになったら、あらためてオブジェクト指向の学習をはじめるといった段階を踏んだ学習が可能です。自分のペースに合わせて学習を進められるため、「Fortran」は学びやすい言語といえるでしょう。
歴史が長いので大量の参考書がある
「Fortran」の歴史は約70年と、プログラミング言語の中でも長い歴史があるので、大量の参考書があります。したがって、豊富な参考書の中から自分の読みやすいものや、理解しやすいものを見つけやすいでしょう。
さらに、インターネット上でも多くの参考書が無料で公開されているため、費用をかけずに学習できます。スクールに通えなくても、独学での学習も可能です。
「Fortran」の使い方
「Fortran」を学習して実際に使いたいと考えている方に向けて、ここでは「Fortran」の使い方を解説します。
「Fortran」を使ったプログラミングに大切なポイントは、主に3つです。
- 開発環境を構築する
- 「Fortran」の形式について知る
- ソースコードの記述における暗黙の了解について知る
開発環境を構築しよう
「Fortran」を使用するためにも、まず開発環境の構築が大切です。「Fortran」の開発環境は、コンパイラも含めて「Fortran Builder」で揃えられます。
コンパイラとは、人間が記述したコードを機械が読み取れる言語に翻訳し、実行ファイルを作成・実行するシステムです。「Fortran Builder」では、「Fortran」の作成・編集・コンパイル・実行・リンク・デバッグなどが、一括でおこなえます。さらに、固定形式から自由形式への変更も、ツールバーから簡単にできます。
「Fortran」の形式について知ろう
「Fortran」は、もともと固定形式というさまざまな制限がある形式でした。たとえば、「特定の列以外では記述がおこなえない」「1行は72文字までしか記述ができない」などの厳しい制約です。
しかし、現在の「Fortran」は、自由形式も利用できるようになりました。自由形式であれば、制限なく記述できたり、1行に132文字まで記述できたりする、汎用性の高い形式も利用できます。「Fortran」は、自由形式に変更してからの使用がおすすめです。固定形式か自由形式かはファイルの識別子によって判断されます。以下の表が識別子の分類です。必要に応じてファイルを変更しましょう。
固定形式(Fortran77) | *.for、*.f |
---|---|
自由形式(Fortran90) | *.f90 |
ソースコードの記述における暗黙の了解について知ろう
「Fortran」には、ソースコードを記述する上で、整数型と実数型を区別するという暗黙の了解があります。
変数の宣言は以下のように記述します。整数型は「integer」で、実数型は「real」です。
1 integer :: a = 76 2 real :: b =6.6
ほかにも、以下の5つのような暗黙の了解が存在します。
- program testからはじまりstopとendで必ず終わる
- 注釈は1列目に”C”を、または文末に”!”を入れてから記述をおこなう
- 記述する順番は、宣言文、実行文&出入力文にして、変数の宣言は必ずする必要はない
- 小文字大文字の区別がない
- 1行に複数行の文を入れる場合は”;”を入力する
「Fortran」を使用する場合は、暗黙の了解を理解しておくことも大切です。
「Fortran」の基本的なコードの書き方
「Fortran」を実際に記述するためには、基本的なコードの書き方を理解する必要があります。
主に、以下の7つの基本的な書き方を知ることが大切です。
- モジュールについて
- 「Fortran」のデータ型
- implicit noneの使い方
- 繰り返しの使い方
- 配列の使い方
- コンパイルについて
- DIMENSION文
モジュールについて知ろう
モジュールとは、変数や関数などをまとめて管理できる機能です。モジュールは、メインプログラムと副プログラムから呼び出して使用します。プログラムの保守性などの観点からも、利用が望ましい機能といえます。
モジュールのコードは、「math_module」という名称のモジュールを記述した例です。
module math_module implicit none real, parameter :: pi = 3.14159 contains function square(x) real :: square real, intent(in) :: x square = x * x end function square function circle_area(r) real :: circle_area real, intent(in) :: r circle_area = pi * square(r) end function circle_area end module math_module
以下は「math_module」を呼び出すメインプログラムの例です。
program main ! ここで「math_module」を呼び出し use math_module implicit none real :: r, a print *, "Enter the radius of a circle:" read *, r a = circle_area(r) print *, "The area of the circle is", a end program main
「Fortran」のデータ型を知ろう
「Fortran」の主なデータ型は以下の4つです。
- 「整数型」integer
- 「実数型」real
- 「複素数型」complex
- 「文字型」character
また、上記4つの宣言以外に3つの宣言もあります。
- 「倍精度実数型」double precision
- 「倍精度複素数型」complex(kind(0d0))
- 「論理型」logical
変数の宣言の記述例は、以下の通りです。
integer :: a = 76(整数型のaという変数に76を代入して宣言) real :: b =6.6(実数型のbという変数に6.6を代入して宣言)
初期値を設定する場合には、「::」を用いて記述します。
「implicit none」の使い方を知ろう
「Fortran」では、バグ防止のために、「implicit none」という「暗黙の型宣言」を使わないことを示す記述が推奨されています。そこで、各プログラムの最初に「implicit none」を指定します。「implicit none」の指定をおこなわないと、本来エラーになるべきものがエラーにならなくなってしまうので、忘れずに指定しましょう。
「implicit none」を記述するコードの例は、以下の通りです。
program hello implicit none ! 暗黙の型宣言を使わないことを宣言 integer :: i ! 変数iを整数型として宣言 real :: x ! 変数xを実数型として宣言 i = 10 x = 3.14 print *, "i =", i print *, "x =", x end program hello
繰り返しの使い方を知ろう
「Fortran」で繰り返しを使用する場合は、do文で書きます。たとえば5〜55を足して、その合計値を出力するコードの例は、以下の通りです。
! 5から55までの整数の和を求める implicit none ! 暗黙の型宣言を使わない integer :: i ! 変数iを整数型として宣言 integer :: sum ! 変数sumを整数型として宣言 sum = 0 ! sumの初期値を0に設定 do i = 5, 55 ! iが5から55まで1ずつ増えるループ sum = sum + i ! sumにiを加える end do print *, "The sum is", sum ! sumの値を表示する end program
上記のコードは、5〜55までの数字を繰り返し足すように指示したプログラムです。結果では、1530という答えが出力されます。繰り返しを使用する場合は、上記の記述を元に数字や文字を変えて利用してください。
配列の使い方を知ろう
「Fortran」は、ほかの言語と同様に配列を利用できます。たとえば、2次元配列4×3を持つ整数配列aを宣言する場合のコードの例は以下の通りです。
integer, dimension(4,3) :: a
また、プログラム実行時に配列の大きさが未定の場合や、配列に入る変数の状態がわからない場合などは、配列の動的割付けをおこないます。割付けの配列を宣言する場合は、allocatable属性を指定して、配列の大きさはコロンで指定します。
配列の動的割付けを記述するコードの例は、以下の通りです。
! 配列の宣言 real, allocatable :: a(:,:) ! 配列の割り当て allocate(a(2:7, 3:5))
上記の記述でaは2次元配列で、第1次元は2から7まで、第2次元は3から5までの範囲を持ちます。
コンパイルを知ろう
コンパイルをするためには、コンパイラというソフトウェアが必要です。「Fortran」の場合は、「Fortran Builder」があればコンパイルできます。コンパイルを実行するには、コンパイラを開いてファイルを実行するだけです。「.exe」というファイルができていれば、コンパイルは成功です。
DIMENSION文を使おう
DIMENSION文とは、変数を定義するときにすべての変数を定義しなくてもよい文です。配列の大きさを判断して、それを元に宣言できます。たとえば、A(1),A(2),A(3)というように1次元配列で定義した場合では、配列の大きさが3になるので、配列の次元をdimensionA(3)と宣言することが可能です。したがって、DIMENSION文を使えば記述の短縮ができます。
DIMENSION文を使用したコードの例は、以下の通りです。
! 型宣言と同時にdimension属性を付与する場合 real, dimension(10) :: x ! 10要素の1次元配列 integer, dimension(5, 5) :: y ! 5×5の2次元配列 ! 別の行でdimension文を記述する場合 real :: z(20) ! 20要素の1次元配列 dimension z(20)
「Fortran」を学んでコンピュータ計算の分野に触れてみよう
「Fortran」は、計算や数式などの数学分野に特化したプログラミング言語です。専門性が高く習得が難しいと思われていますが、プログラミング学習初心者でも学習しやすい言語です。大規模な計算などをおこなうなど、実務でも便利に活用できます。
これからプログラミングやコンピュータ分野について学習する方は、ぜひ本記事を参考に「Fortran」を勉強してみてください。