コラム25.  :C言語よりも古い高級言語

FORTRAN

C言語は、1972年に開発された現在使われているプログラミング言語のなかでは、かなり古い部類に入るプログラミング言語です。しかし、現在使われている言語のなかには、実はこれよりも、もっと古いプログラミング言語があるのです。その一つが、FORTRAN(フォートラン)です。この言語は、1957年にIBMのジョン・バッカスらによって開発されました。C言語の開発からさかのぼること、15年という、相当古い言語だということがわかります。

その当時は、コンピュータの主役はメーンフレームコンピュータであり、言語もアセンブラが普通、という時代でした。メーンフレームコンピュータとは、企業の基幹業務と呼んでいる組織内部の処理と、大量または機密性の高い処理に利用する大型コンピュータのことで、「汎用機」「汎用コンピュータ」「大型機」「大型コンピュータ」などとも呼ばれます。

そのため、アセンブラでのプログラムは、大変不便でした。FORTRANはそういう状況で現れた最初の高級言語であり、そういった不便な状況を改善したことから、その後急速に普及しました。

FORTRANの使用用途

FORTRANは当初、様々な用途で使われていましたが、現在おもに使用される領域は、科学技術計算で、主に科学者・技術者によって愛用されています。それもそのはず、FORTRANは、FORmula TRANslaterの略で、「FORmula TRANslation」の略で、言語の名前そのものが「数式翻訳」という意味があるからです。

1954年当初に開発された言語使用からは大分進化を遂げているものの、現在でも大型コンピュータである地球シミュレータなどで現在でも使用されています。FORTRANは数式をほぼそのまま文として記述できるため、数値計算のプログラムの作成が容易であると言われています。また、実数だけでなく、複素数も使用することが可能であることから、科学技術計算には向いていると言われています。

そういったこともあり、科学技術計算に関する過去の膨大な量のライブラリの蓄積が存在します。それらは特殊なものが多いため、使用するユーザーが科学者や技術者など特定のユーザーに限られるということと、違う言語に移植しようとするとかなりな困難が伴うと思われます。そういったこともあり、圧倒的な者あを占めるC/C++言語のような派手さはないものの、細々と、しかし着実に受け継がれてきました。

COBOL

また、FORTRANと負けないくらい古い言語として、COBOL(コボル)があげられます。COBOLは事務処理用の言語で、その名前も、「COmmon Business Oriented Language」(共通事務処理用言語)略です。FORTRAN同様C言語よりも古く、現在でも使い続けられている言語の一つです。

1950年代、事務処理言語は開発メーカーごとに異なっていました。そのため、統一の必要性を感じたアメリカ国防総省が協議会を立ち上げ、1959年に開発されたのが、COBOLです。いわば、アメリカ政府のお墨付きで開発された言語で、これによりアメリカ政府の事務処理システムの言語はすべてCOBOLで開発されるようになり、それをきっかけに世界中に普及しました。

現在でも、金融や官公庁のシステムでは、COBOLを使用したものが少なからず存在します。

徐々に姿を消しつつあるCOBOL

FORTRANが今でも科学施術計算の分野で現役であるのに対し、COBOLはというとその立場は微妙で、「いまだにある程度使い続けられてはいるものの、将来的には消えていく運命にある」言語である、と言えるでしょう。

理由は、すでに事務処理のシステムを開発するには、JavaはC#など、より最適な言語が現れ、新しいシステムはどんどんそちらに置き換えられているためで、COBOLは言語使用も古く、扱える技術者の数も少ないため、どちらかというと「昔のシステムをメンテナンスしながら使っている」ために残っているというのが現状です。

COBOLプログラマーの育成?

とは言え、そう簡単に世代交代が行えないのが、コンピュータシステムのややこしいところです。現在でも政府や大企業の業務システムなどを中心に、数多くのCOBOLプログラムが開発・運用・保守され続けていますが、そのためにはCOBOLプログラミングができる技術者が必要です。また、そのプログラムを最新の言語に置き換えるにしても、COBOLのシステムの解析ができる技術者が必要です。

それでいてCOBOLがわかるプログラマーは高齢化しており、年々その数が減少しています。そういったことから、「消えゆくシステムをメンテナンスしたり置き換えたりするために新たにCOBOL技術者を育成しなくてはならない」というジレンマが生じています。

もしかしたら将来、C言語でも同じことが起こるかもしれません。