Fortran 90/95 の学習本。去年と今年、3年生に勉強させるのに使ってみた。Fortran は理系研究者の間では根強く使われているものの、 世間的には使用者が少ないために教科書もそれほど多くは出ていない。本書は、その中でも最も学習に適した本であると思う。
本書の特徴は、偏微分方程式の数値計算を目標にして、 それに便利な機能を重点的に取り上げていることだ。特徴としては:
- 最大の特徴は、モジュール副プログラムに1章を割いて、使い方を丁寧に解説してあることである。 伝統的な外部副プログラムの説明の章は、それのヴァリアントのような感じで短く説明してある。 これは Fortran 90/95 の新機能を活かした便利なプログラム開発ができるという意味で、他書にない非常に良い点である。
- モジュールの使い方として、副プログラム、グローバル変数、インターフェース・モジュールが取り上げられており、 詳しい説明がある。いずれも、Fortran 90/95 の機能を活かしたプログラム作りに有用なもので、本書の良い点である。
- 外部副プログラムを使う場合は interface モジュールの使用をほぼ必須としており、external 文の説明は無い。
- 組み込み関数としては、行列演算に関するものが比較的詳しい。
- 反面、内容を絞っているところがある。構造体やポインタなど、あまり偏微分方程式の計算に使いそうにないものは全く取り上げられていない。 構文としても、do while、where, forall のようなものは取り上げられていない。do while の代わりとしては、 無限 do ループの中に条件判断を入れて exit や stop するという考えのようである。
- Fortran 90/95 では、変数の宣言文に :: を付けることが多いのだが、本書では必要の無いところには付けていない。 こういったことを始めとして、プログラムに必要の無いものはあまり付けないという方針が一貫している。
が挙げられる。授業に利用するという意味での特徴としては:
- 1セメスター(実質的には4ヶ月)の授業としては、分量がやや多い。今年の場合は6章構成のうち5章まで何とか終わった。 5章までが言語仕様で、6章は数値計算法なので、5章まで終われば Fortran の習得としては十分ではある。 ただし、このペースだと付いてこられない学生もいた。付いてこられないという意味は、 このペースでは問題を解くことについていけなくなって、問題を解くのをあきらめてしまった学生がいたということである。
- 5章までの問題は、行列の簡単な計算が多く、あまり面白いとはいえない。反面、アルゴリズムに頭を悩ませることなく 言語仕様の習得ができるようになっている。
ということがある。あと、細かく気づいた点として覚えていることとしては:
- 改行を抑制するための書式としてバックスラッシュを使っている箇所がある。たとえば、write (*, '(a\)') 'input n : ' のように。 これは非標準機能のため、通らないコンパイラも多い。
- read 文では書式を指定しない並び入力を薦めている箇所がある (p.43)。書式を合わせるときに間違いが起こりやすいからである。 しかし、私の好みから言えば、書式を使ったほうが入力ファイルが整った感じになるので、書式を指定する方がおすすめである。
- 入出力の書式の説明が付録 1.3 だけではやや足りない。たとえば、x 編集記述子とか / 編集記述子とか。 上述のように、私が好むように read で書式を使う場合にはこういった編集記述子が必要になる。
- Fortran 77 では組み込み関数に総称名が無かったようなことが書かれているが (p.147)、私がまだ持っている Fortran 77 の教科書を 確認したところ、組み込み関数に関しては総称名はあった。無かったのは、ユーザが作成した関数に総称名が使えることである。
がある。
全体的に見ると、私が見た Fortran 90/95 の日本語の教科書の中では、Fortran 90/95 の特徴を活かして偏微分方程式の数値計算のようなことをすることを目標にするならば、 最も良い選択であると思う。