FORTRANの基本的な使い方を徹底解説!FORTRANの用途とメリットは?
FORTRANとは
FORTRAN(フォートラン)は1954年にアメリカの数学者、ジョン・バッカスによって作成された、世界初の高水準言語です。
世界で初めてということもあり、生まれた当時はコンピュータで広く使われてきました。
科学計算に特化したプログラミング言語で、今でもスーパーコンピュータや計算系のソフトウェアなどに使用されています。
歴史は50年以上という老舗言語ですが、未だ前線で活躍している現役です。
FORTRANの特徴
読みやすい
FORTRANは非常に習得のしやすいプログラミング言語です。その理由は、コードが読みやすいためです。
例えば、FORTRANは変数の型の指定を最初に行うので分かりやすく、修正も楽です。
段階を踏んで習得できる
プログラミングの学習で躓く人が多い、「オブジェクト指向」の理解を一旦置いておいて「副関数」から学習する…という事ができます。
よほどな大規模なプログラムをつくる訳でもないのであれば、副プログラム(サブルーチン)で充分です。
そして副プログラム(サブルーチン)を利用し、様々な開発を行い、プログラミングに対する理解が深まって大規模なプログラムをつくる事になります。
副プログラム(サブルーチン)で限界を感じたら、「オブジェクト指向」の学習に取り組むというような、段階を踏んだ学習が可能です。
<関連記事>
オブジェクト指向とは?オブジェクト指向の基本を徹底解説!メリットやカプセル化の概念は?おすすめオブジェクト指向言語も紹介
書籍を簡単に参照できる
先に解説したとおり、Fortran言語の歴史はプログラミング言語の中でも非常に長い部類に入ります。
そのため簡単に、かつ大量に参考書も見つかるでしょう。
上記の特徴により、時間の観点からも難易度の観点からも、そして費用の観点からも習得コストの低い言語といえます。
FORTRANとFortran
二種類のフォートラン語
フォートランという言語には大きく分けて2つの種類があります。
FORTRANとFortranです。
主にFORTRANはFORTRAN77以前、FortranはFortran90以降を指します。
この二つの大きな差異は、固定形式と自由形式という書き方です。
フォートラン語の歴史
Fortran言語はその歴史の長さから、今まで多くのユーザーによって作成された計算プログラムがたくさんあります。
その多くは未だ現役で、実際に利用されています。未だ盛んに使われているそれは、ほとんどが固定形式です。
固定形式
固定形式とは、プログラム形式の一種となります。
かつて、プログラムをコンピューターに入力するには「パンチカード」というものを使わなければなりませんでした。
固定形式はその時の名残というわけです。
現在はテキストエディタを自由に利用できます。これは自由形式です。
一方で固定形式はそんな今の時代にはあまりそぐわない、様々な制限があります。
例えば特定の列以降でないと文の記述できず、1行はたった7文字までしか書けないのです。
今のプログラミング環境からすると、これは非常に不便といわざるを得ません。
自由形式
固定形式がかなり不便なのでFORTRANも使いづらいのではないかと感じた人もいるでしょう。ですが安心してください。
現在のFortran言語のプログラムには、自由形式も存在します。
行のどの位置からでも文の記述が認められる上に、1行当たりに認識されるのが132文字までとなりました。
このおかげで、かなり扱いやすくなっています。
将来の保守性や拡張性を考えるなら、既存のプログラムを自由形式に書き換えておくメリットはかなり大きいといえるでしょう。
Fortran Builderで固定形式を自由形式に変換する
Fortran Builderとは、Fortranの統合開発環境です。
単体にてFortranプログラムの
- 作成
- 編集
- コンパイル
- リンク
- 実行
- デバッグ
が一括で行えるオールインワンパッケージです。
そのため個別にコンパイラ等をダウンロード・インストール必要がありません。
そしてFortran Builderはツールバーから簡単に、固定形式を自由形式に変換する事ができます。
Fortranプログラムの構成
主プログラムと副プログラム
大規模なプログラムの場合、主プログラム(program から end program まで)から副プログラム(サブルーチン)を呼び出して使う事があります。
モジュール
変数や定数・型と手続き、またインターフェース定義などをまとめたものです。
主プログラム(メインプログラム)や、副プログラム(サブルーチン)から呼び出して使います。
プログラムの保守性などの観点から、モジュールの利用は強く推奨されています。
たとえば、以下の様にモジュールを利用します。
- module my_data
- implicit none
- integer,parameter :: my_age = 18
- end module my_dataprogram short_module
- use my_data
- implicit none
- print *, “I’m”, my_age, “years old.”
- end program short_module出力結果:
- I’m 18 years old.
Fortranのデータ型
主なデータ型は
- 「整数型」はinteger
- 「実数型」はreal
- 「複素数型」はcomplex
- 「文字型」はcharacter
で宣言します。
他にも倍精度実数型・倍精度複素数型・論理型があり、以下のように宣言します。
- 「倍精度実数型」はdouble precision
- 「倍精度複素数型」は complex(kind(0d0))
- 「論理型」はlogical
変数の宣言は以下の通りです。
- integer :: a = 76
- real :: b = 6.6
初期値を指定する場合には「::」が必要なので注意しましょう。
implicit none について
バグを防止するという観点から、FORTRANではimplicit noneの記述が推奨とされています。
これは「暗黙の型宣言」を使わないことを示すものです。
どのように使えば良いのでしょうか。
まず各プログラムの単位で、最初にimplicit noneを指定しておきましょう。
下記の例はimplicit noneを宣言しています。4行目で icounterをiconterとしてしまったスペルミスが、コンパイル時に検出されます。
implicit noneを指定しないと、本来エラーになるものがエラーにならなくなってしまうのです。
このままコンパイルが行われると、バグの原因となってしまいます。
- program error_detection
- implicit none
- integer :: icounter = 0
- iconter = icounter + 1
- print *, icounter
- end program error_detection
Fortranの繰り返し
繰り返しを Fortranで行うには、do文で書きます。
例えば5から55までを足して、その合計値を出力する場合は以下の様に書きます。
- program sum
- implicit none
- integer total, i
- total = 0
- do i = 5, 55
- total = total + i
- end do
- print *, total
- end program sum出力例:
- 1530
Fortranの配列
Fortranも他言語と同様に配列を利用できます。
例えば、2次元配列4×3を持つ整数配列aを宣言する場合、以下のように書きます。
- integer,dimension(4,3) :: a
また、1次元配列7つの成分を持つ配列bをdimension属性で宣言する場合は、以下のように記述しましょう。
- real,dimension(5) :: b
Fortranの配列の動的割付け
プログラム作成時にはまだ配列の大きさが未定のままだったり、分からない状態だったりすることが多いです。
また、実行時に配列する分の領域を確保したいという場合もあるでしょう。
この様な場合には、配列の動的割付けを行います。
まず割付けを行いたい配列を宣言する際には、allocatable属性を指定するようにしてください。
配列の大きさに関しては、コロンで指定します。実際に割付ける際には、allocate文を用いましょう。
領域の解放は自動ですが、明確な形で解放したい場合にはdeallocate文の使用がオススメです。
説明だけでは分かりづらいため、実際の割付け例を見て見ましょう。
- program array_alloc
- implicit none
- integer n, i
- integer,allocatable,dimension(:) :: a
- print *, “Enter number of data:”
- read *, n
- allocate( a(n) )
- do i = 1, n
- print *, “Enter item(“, i, “):”
- read *, a(i)
- end do
- print *, “Total=”, sum(a)
- deallocate(a)
- end program array_alloc
実行例は以下の通りです。
- Enter number of data:
- 3
- Enter item( 1 ):
- 10
- Enter item( 2 ):
- 20
- Enter item( 3 ):
- 30
- Total= 60
FORTRAN開発環境構築
Fortran Builder
Fortran Builderの特徴で最初にあげるべきは、簡単なインストールでしょう。
プログラミング学習をする時に、開発環境の構築で挫折する人はかなり多いのでおすすめです。
これだけで
- 作成
- 編集
- コンパイル
- リンク
- 実行
- デバッグ
が行えるオールインワンパッケージです。
他に何かをダウンロード・インストールする必要はありません。
シンプルな操作性や分かりやすいインターフェースが売りです。
また、Fortran専用のエディタもあります。
キーワードの色分けや入力補完など便利な機能があるので、プログラムの作成を快適にしてくれるでしょう。
さらに、Fortran Builderはプログラムチェック機能もかなり強力です。
標準に準拠していないコードや初期化のし忘れ、引数の型の誤りを機械的に見つけ出してくれます。
これによりバグの温床であるプログラム上の誤りや、ポータビリティを損なう Fortran標準への非準拠を容易に検出します。
強力なプログラムチェック機能は、より保守性が高く移植性に優れたプログラムの作成を支援してくれるでしょう。
メンテナンス時間を大幅に削減し、そのプログラムを利用する人の安全確認の手間も省いてくれます。
Atomとintel visual fortran compiler
intel visual fortran compilerは、インテルプロセッサーの性能を最大限引き出すようにFortranなどを自動最適化するコンパイラーです。
Atomはとても高機能ゆえ人気があるエディターになっています。
コードの間違いチェックをしてくれるパッケージプログラムを、Atomにインストールする事も可能です。
Atomでコードを書いて、intel visual fortran compilerでコンパイルして実行しましょう。
AtomとGfortran
フリーのコンパイラーをお求めの場合は、Gfortranがおすすめです。
Gfortranはインストーラで一発導入できるので、簡単にインストールができます。
Atomはかなりの高機能故に人気があるエディターです。Atomでコードを書いてGfortranでコンパイルして実行しましょう。
Cygwin
CygwinはUnixを仮想的に実現するもので大変汎用性の高いプログラムなのですが、初心者には少々難しく煩雑です。
おすすめはAtom
おすすめできるエディタは、圧倒的にAtomです。
特徴は、拡張機能が多いこととOSに左右されないこと。
細かい使い方が分からなくても、ネットで調べるとすぐわかります。
見た目が良い上に見やすいため、初心者でも使いやすいという点です。
Atomについては以下の記事で使い方を詳しく解説しています。Atomについて興味がある方は、ぜひ併せてご参照ください。
Atomエディタの基本的な使い方を徹底解説!インストールの手順と日本語化・初期設定の方法は?使えるおすすめ機能もご紹介
エディタは他にもある
Atom以外にもエディタはSublime TextやEclipse、viやmi、サクラエディタ等があります。
いろいろ使ってみて自分が最も使い易いと感じるエディタを選ぶと良いでしょう。
各テキストエディタについては以下の記事でそれぞれ詳しく解説しています。テキストエディタを選定する上で参考にしてみてはいかがでしょうか。
Sublime Textの使い方と設定方法を徹底解説!便利な機能と使用方法は?ダウンロード方法とインストール手順も紹介
Eclipseの使い方を徹底解説!ダウンロード方法とJavaプログラム実行の手順は?インストールできない時の対処法も確認
サクラエディタの使用方法を解説!初心者に役立つ便利な機能、インストール方法も紹介!Macで使用することは可能?
まとめ
FORTRANは科学計算に特化した言語なので、構造力学から動植物の品種改良など、様々な用途に使われています。
そのため専門性が高くてとっつきにくそうなイメージがあるかもしれませんが、実際はとても学習しやすい言語です。
大規模な計算で大いに役立ってくれることでしょう。
コンピュータの計算分野の登竜門として、学習してみるのも良いのではないでしょうか。
toiroフリーランスは、SHIFTグループがプライムとして参画している独自案件をフリーランスエンジニア向けに紹介する唯一のプラットフォームサービスです。
エージェントによるサポートもありますので、ご利用を検討してみてはいかがでしょうか。