コンパイラの診断機能はそれほど大切?
コンパイラの主な役目はプログラマが書いたソースコードをコンピュータが理解できる形に翻訳することです。
同じソースコードからはどのコンパイラを使ってコンパイルしたプログラムでも同じ計算結果が得られるはずです。
しかしながら実際には以下のようなケースが多く見られます。
- 「PCからサーバマシンへ移行したらコンパイルにとおらなくなった」
- 「コンパイラを変えたら計算結果が変わってしまった」
- 「環境を変えたらコンパイルは通るがプログラムが途中で止まってしまう」
ほとんどのケースで原因となっているのはプログラム上の誤りですが、これを修正するのには多大の労力と時間が必要となります。 特にこのようなケースでは「今まで動いていた」=「正しいプログラムのはずだ」という既成概念がそれをより一層難しいものにしてしまいます。
またプログラムの多くはそのライフタイム(誕生からその役目を終えるまで)を通じて改変に改変を重ね、開発担当者も変わり、更に実行マシン/コンパイラ環境も移り変わって行くものですので、プログラムの保守性を高めておくことが重要だと言えます。
強力な診断機能はプログラムの移植性を高めます
プログラムの移植性を高める為にはFortranの標準に準拠したコードを作成する事が王道と言えます。 Fortran標準に準拠しているのかどうかを調べるのは本来コンパイラがやるべき仕事ですが、 世の中の多くのFortranコンパイラはFortranの標準に準拠していないものであっても「OK」としてコンパイルしてしまう場合がが多々見られます。 これが移植性を損なう大きな原因となっています。
nAG Fortranコンパイラは「コンパイラの本来あるべき姿」を追求し、 Fortran標準に準拠しているかのチェック(診断)を十分に行い、準拠していないものをエラーとしてレポートします。 これによりどのコンパイラ環境でも動くFortran標準に準拠したプログラムコードの生成を強力に支援します。
強力な診断機能は短期間でプログラムをより安全で堅固にします
プログラムを他のプラットフォームに移行した際にプログラムが動かなくなる場合に多く見受けられるのが、 初期化を行わずに変数の値を参照している初期化忘れです。 「今まで動いていたプログラムが動かなくなった」のは実は初期化忘れをしていて、今までの環境で「たまたま」上手く行っていただけだったという場合もあります。
nAG Fortranコンパイラは初期化忘れに関しても非常に強力に検出します。コンパイラが検出してくれたものを修正していくことで、非常に効率よく安全でクオリティーの高いプログラムコードを得ることが可能となります。
結果としてユーザプログラムの保守性が飛躍的に高まります
Fortran標準にしっかりと準拠し且つクオリティーの高い安全なプログラムコードはそうでないものと比較して、 非常に少ない労力と時間で保守作業(メンテナンス)を行うことが可能です。 Fortranのプログラムのライフタイムは長いものでは数十年以上に及びますので、累積される保守作業量は大きな違いとして現れます。
企業であればこの違いが直接コスト削減に結びつきますし、研究者の方々であれば研究に使える時間の中からプログラムの保守作業に費やさなければならない時間が削り取られる事につながりかねません。
以下のnAGコンパイラ製品が皆様のお役に立てば幸いです。
- Fortran Builder (Windows版 nAG Fortranコンパイラ)
- nAG Fortranコンパイラ (その他)