提言
 | 慶應義塾理工学情報センター（KIC）

## 今、Fortranを考える

ITC 所長：野寺 隆

現代はあらゆる社会活動が情報技術によって支えられていると言って寡言ではない。大学における情報処理教育は、近年、計算することに特化したプログラミング言語を教えるだけではなく、セキュリティを含めたネットワークなどの情報システムや「読書きそろばん」の能力を意味するコンピュータリテラシーなど多岐にわたっている。

私の大学生時代には、理工系の情報処理と言えば、プログラミング言語を習うことであった。当時の計算機（メインフレーム）に搭載されて利用できる高級言語は、IBMが開発した科学技術計算のためのFORTRANであり、もうひとつの言語は事務処理を行うためのCOBOLが一般的なものであった。もちろん、専門課程に進んで、DEC社製PDP-11のアセンブラーやLISPのプログラミングを習った覚えがある。大学のゼミ合宿では、誰が作ったのか定かでないがFORTRANの歌（「おおブレネリ」の替え歌）を「ヤッホーフォートランランラン」と花火大会の後、皆で合唱して宿に帰った思い出がある。FORTRANは、シニア世代にとって懐かしい響きのプログラミング言語なのだ。

近年の大学生は、このFORTRAN（最近のバージョンではFortran）というプログラミング言語の名前をどの程度知っているのだろうか。もちろん、「ああ、一世代前の古いプログラミング言語で、名前だけは知っていますよ」という学生も多いと思う。現状ではFortranを大学の初年度教育で教えている所はまったくないわけではないが、科学技術計算やシミュレーションの基礎はMATLABやＲで教えている大学がかなり多いのではないだろうか。小生も学生にFortranを教えるのをやめて20年くらいになる。

そこで、2015年7月の米国の学会誌IEEE Spectrum 1）の人気プログラミング言語ランキングの調査結果を調べてみると、1位がJava、2位がC、3位がC++、ずーと下がって、27位がLisp、28位がFortran、29位がDelphiであった。1位、2位、3位にはうなずけるものがあるが、FortranがLispに負けているのは驚愕の驚きだ。ちなみに、MATLABは、10位で健闘しており、なんとなく時代を感じさせるものがある。ある意味では、Fortranは科学技術計算用のプログラミング言語としてすでに「絶滅危惧種なのかも」と言う人もいる。こうなってしまった原因は幾つか考えられる。ひとつの理由は、もともとFORTRANは静的なプログラミングしかできないものであったが、Fortran 90/ 95/ 2003/ 2008と改訂を重ねるに従って、現状のFortranは動的なプログラミングもサポートする高度なプログラミング言語に進化したからだ。ただ、進化したことで特徴のない使い勝手のよくない気難しいプログラミング言語となり、ユーザーは得体の知れないFortranより素性の正しく使い勝手のよい新しいプログラミング言語に乗り換えてしまったのかもしれない。しかし、何と言って
e9f
も世界最高速を名乗る「京」に代表される日本のスーパーコンピュータの多くのソフトウェアがFortranで記述されている。Fortranがプログラミング言語として絶滅するとなると、これは大問題である。もちろん、Fortranが絶滅危惧種に認定されれば、動植物のように手厚い保護を受けられる可能性もある。しかし、世界最速ランキング1位を狙うだけでなく、有意義な研究成果を達成するためのプログラミング言語としては、現状ではやはりFortranを外すことはできそうにない。

現在、世の中の科学技術計算のソフトウェアはC++で記述するのがトレンドになりつつある。Fortranも絶滅危惧種のプログラミング言語ではなく、「複雑な要求のコーディングは少し面倒ではある」が有用な価値のあるプログラミング言語であることを若者にわかりやすく伝えることも大切なことなのではないだろうか。これからもFortranは人知れず進化の道をたどると考えられるのだが、Fortranよ、何処に行く。これは、学生時代、最初に高級なプログラミング言語としてFORTRANに慣れ親しんだシニア世代の独り言かも知れない。

1）N. Diakopoulos and S. Cass, Interactive: The Top Programming Languages 2015, New languages enter the scene, and big data makes its mark, IEEE Spectrum, 20 Jul, 2015.
http://spectrum.ieee.org/static/interactive-the-top-programming-languages-2015