Fortranよ永遠なれ

僕は研究の中で解析プログラムの言語として「Fortran」という言語を使っています。

他人に話すと「なにそれ?聞いたことない」と言われます。

IT企業にエントリーシートを出す時も、『あなたが利用できる言語を選択してください』の選択肢にFortranが出てくることはほとんどないです。

それもそのはずで、Fortranというのは、名前の由来が「formula translation(数式翻訳)」であることからもわかるように、そもそも数値計算向けの言語です。

まだコンピュータが本来の「計算機」という意味で使われていたころからある言語なんです。イマドキの「プログラミング」=「Web開発」「アプリ」「人工知能」「VR」みたいなイメージとは一線を課してます。

Fortranのいい所はやはり計算向けなところで、多くの関数だのサブルーチンだのを使えるところです。しかも高速です。機械学習がどうとかでチヤホヤされてるPyth●nなんて敵にもなりません。(ただpythonは並列化処理が楽なのが羨ましい)

数値計算に関して言えば現在の新しい言語にもまったく引けを取らず、現在も様々な研究分野でFortranが解析に使われていると聞きます。実物は見たことないですが。

悪いところはとにかく古いことです。1957年に最初のコンパイラが登場したというので、半世紀以上も前から使われてることになります。穴を開けたパンチカードをコンピュータに通して計算をやってた時代ですよ。

当然ながら幾度もバージョンアップを重ねているわけで、最新版はFortran 2008と呼ばれる規格です。最新版なのに9年前です。2008年と言えばオバマが大統領になって、川田亜子さんが亡くなって、新クリフハンガーは2人しか成功してなかった頃です。昔でしょ。

しかも残念なことにFortran2008に準拠して書かれたプログラムを僕は見たことがありません。Fortran2003でも僅かです。90/95で少し見かける程度です。

これはあくまで僕の想像ですが、先述の「様々な研究分野で」使われているfortranプログラムですが、大部分が「FORTRAN77」のままなんじゃないでしょうか…?

(※FORTRAN77は、構造化プログラミング、つまりIFとかELSEとかが初めて採用された頃である。記述方法は全て大文字というのがシブイ。超ジジイ言語で、非推奨な記法がたくさん使えます。多分このバージョン自体が非推奨といっても過言じゃないでしょう。)

っていうのにはちょっと理由があって、今自分が使ってるソースコードはもともと教授からもらったものなのですが、もらった当初はFORTRAN77で書かれていました。見たこともないジジイ記法ばかりでさっぱり理解できなかったので、シコシコとFortran90の記法で書き直しましたが。

これは僕の想像ですが、昔から使われているプログラムの多くは、77で書かれたコードを最新の記法に修正せず、そのまま使われているのじゃないかと思います。

Fortran90ではいくつかの機能が「時代遅れ」とされたものの、FORTRAN77から削除された文法はなく、非推奨とされる記法でもコンパイルできちゃいます。

並列処理が必要なプログラムに関してはHPCに対応したFortran95仕様に更新されていると考えられます(Fortan90→95ではいくつかの機能が削除されている)が、それ以外のコードをわざわざアップデートする必要もないでしょうし。

そして、過去の記法に沿ったソースコードが書き直されない理由はもう一つある…と思います(これも想像ですが)。

GOTO文の存在です。

今では多くの言語で「非推奨」「避けるべき」「鼻毛」などと呼ばれるgoto文ですが、教授からもらったソースコードには山ほど書いてありました。

goto文はソースコードをスパゲティ化させる大きな要因ですが、その自由度も高く、意外とIf文とかに置き換えづらいのです

かくいう私のソースコードもgoto文はそのままにして、未だにFortran90でコンパイルしてる状況です。おかげでFORTRAN77の文法だけだった時よりも見づらくなっています。例えるならスパゲティと讃岐うどんを同時に茹でたような状況です。

それ以外にも、以前記事にした暗黙の型宣言も90以降では推奨されていませんが、ヘタにimplicit noneを使おうとすると、ちょっとfor文に使ってただけの変数にまでいちいち型宣言をしないといけなくなって死ぬほどめんどくさいです。(ただし、implicit noneを使うのをサボったばかりに延々とデバッグをする羽目になったこともあるので、正直どっちもどっち。)

世間一般で「Fortranにはまだまだ需要がある」と言われた時、

それは「Fortran(90以降の俗称)」ではなく「FORTRAN(77以前の俗称)」なのです

まあ背景があって、結局FORTRAN77のコードが使い回され、2003/2008での改善も虚しく「FORTRAN=古代言語」という印象が覆ることはなし。

基本情報技術者試験のプログラミング問題の選択肢からも外され、「猫でもわかるfortran」みたいな学習書も発売されず、その肩身はどんどん狭くなる一方な気がします。

全国で「FORTRAN」ではなく「Fortran」を使ってビジネスを行なっている方(いないかもしれない)に、お願いがあります。

どうか「ウチはちゃんと最新のFortran2008使いを求めているぞ!」と大きな声で宣言して下さい。

このままだと、夢見る若きFortran使い(いないかもしれない)が、団塊のFORTRAN世代にげんなりして逃げ出してしまいます…。

—–

※ここまでの文章に一部誤りがありました。goto文が「鼻毛」と呼ばれた例は存在しないにもかかわらず、あたかも「鼻毛」と呼ばれたかのような記載をしてしまいました。お詫びして訂正いたします。正直に言うと「鼻毛」だけでなく、この記事全体が想像を基にした嘘八百で構成されていますが、そこはスルーして下さい。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

%d人のブロガーが「いいね」をつけました。