ご存知のことかと思いますが、世の中には様々なプログラミング言語が存在します。そして、それぞれのプログラミング言語には、誕生の経緯や発展の過程など、歴史があります。
プログラミングの歴史には、IT業界やシステム開発がどのように進化していきたのか、更には、これからの技術トレンドや流行り、廃りを推測するヒントがたくさん詰まっています。
そこで今回は、業務でもプライベートでも触ったことのあるエンジニアは、非常に少数派だとは思いますが、プログラミング言語の歴史に燦然と輝く『Ada』についてご紹介いたします。
Adaの概要
まずは、プログラミング言語Adaについて簡単にご説明いたします。
Adaは“エダ”ではなく、“エイダ”と呼びます。この名前は、ラブレース伯爵夫人オーガスタ・エイダ・キング(通称、エイダ・ラブレス)という19世紀のイギリス貴族から取られています。
この女性は、世界で初めてプログラミング可能な計算機を設計したことから「コンピューターの父」と言われるチャールズ・バベッジと親交があり、オリジナルのプログラムを書簡に書き残したため、「世界初のプログラマー」と言われることあります。
ちなみに、アメリカにはエイダ・ラブレス賞というものがあり、この賞の受賞者にはコンピューターの不具合のことを「バグ」と呼ぶきかっけを作ったグレース・ホッパー氏やYahoo!の元CEOであるキャロル・アン・バーツ氏など、層々たる顔ぶれが並んでいます。
さて、話をプログラミング言語Adaに戻しましょう。
詳しくは後述しますが、Adaは開発経緯からみても、相当に特殊なプログラミング言語であり、日本では特定のシステム(より厳密に言えば、ある種の組み込み系システム)以外では、まず使われることのないレアなプログラミング言語です。
特定のシステムとは、ずばり“兵器”です。世界最強と言われ、日本でも導入するかどうか話題となった、アメリカ製戦闘機F-22“ラプター”や三菱重工業が製造し海上自衛隊に装備されている97式魚雷はAdaでプログラミングされていることが明らかになっています。
こうした事情もあってか、日本においては教育機関でもAdaの教育・利用はあまり見られません。業務ではもちろん、プライベートでも触ったことのあるエンジニアは少数派となっています。
Adaの誕生
1970年代にアメリカ国防総省が主に組み込み系システムに使える、信頼性と保守性に優れたプログラミング言語を求めて、国際入札を行ったところからAdaの歴史は始まります。この国際入札では最終的に4つの案が提示され、最も優れていると考えられたフランスチームの案(当時はGREENと呼ばれていた)がAdaとして整備されていくことになります。
なお、アメリカ国防層省が入札を行うにあたって各チームに与えられた要件の中には、「開発効率よりも可読性を重視すること」や「プリプロセッサを使わないこと(※)」といったものがあり、いかに保守性を重視していたのかがうかがい知ることができます。
※プリプロセッサとは、ソースコードに書かれた処理を行う前に、データの入力や整形などの前処理する仕組みのこと。つまり、プリプロセッサがあると、ソースコードには表現されきれていない処理がシステム的に走ってしまう、ということになります。このプリプロセッサが、バグの元になることもあります。
また、大規模なシステム開発に耐えられるように、という観点から、言語仕様としてマルチパラダイムな汎用言語(この時点で、手続き型以外にも関数型に対応)を目指しており、例外処理や並行プログラミングなど、当時としては相当に先進的なものとなっていました。そのため、言語仕様をまとめるのに難航し、5段階ものドラフトが作られたそうです。
Adaの黎明期
Adaの仕様は最終的に1983年にMIL規格(MIL-STD-1815)として規格化されました。国際標準規格と言えばANSIやISOなどが有名ですが、MIL規格は、あまり聞きなれないものかと思います。
それもそのはずで、このMIL規格はアメリカ国防総省が定める調達のための規格であり、あまり一般人が意識するような規格ではありません。なお、規格番号の1815はエイダ・ラブレスの生まれた年(1815年)にちなんだものだそうです。
このように、アメリカ国防総省が積極的にAdaの利用を推奨したものの、Adaには当時のコンピューターにとっては“重い”プログラミング言語である、という欠点もありました。80年代当時、IBM PCやNEC PC-9800シリーズなど16ビットパソコンが広まっていましたが、Adaの実装例はほとんどないとされています。
兵器は採算度外視で製造されるため、比較的高性能なハードウェアを用意できます。それでも、Adaを十分に利用できるほどのハードウェア性能を搭載するのは難しく、利用は現実的ではない、という批判的な意見も根強かったようです。
また、先進的というのは、裏を返せば“冒険的でリスクがあるかもしれない”と言えます。その点についても、Adaの兵器システムへの採用を疑問視する向きがありました。
例えば、ALGOLというプログラミング開発に関わったことなどで知られるアントニー・ホーア氏が1980年にチューリング賞を受賞した際、Adaへの批判の意味も込めて、以下のように演説したのは有名です。
「ソフトウェアを設計するには、2通りの方法がある。1つは、とてもシンプルに設計して、明らかに欠陥がないようにすること。もう1つは、とても複雑に設計して明らかな欠陥がないようにすることだ。前者の方がはるかに困難である」
Adaの成長期
大企業がワークステーションなどの大型コンピューター上で走らせていた、業務上重要なシステムか、あるいは、アメリカ国防総省向けのシステムや兵器の組み込み系システムくらいにしか使われてこなかったAdaでしたが、1980年代後半になってくると、登場からそれなりの月日が経ち、機器の性能向上もあり、「先進的で危ない」「仕様が重いから、ダメ」という批判は聞かれなくなりました。
1990年からは新たなパラダイム、オブジェクト指向に対応するために仕様の改定が行われ、1995年には、世界で初めてISOで標準化されたオブジェクト指向プログラミング言語となりました。
では、Adaはパソコンでも実装され、民間でも広まったかと聞かれると、答えはノーです。1980年代後半から1990年代にかけて、Perl やPHP、 Javaなど、より世代の新しいプログラミング言語が登場し広まっていたため、むしろAdaは民間では使われなくなっていきました(まったくなくなった訳ではなく、アメリカのボーイング社の旅客機など、他の言語に置き換えるのは難しいと考えられたシステムでは、今なおAdaが使われています)。
その一方で、アメリカを中心とする西側諸国での兵器開発の現場ではAdaはスタンダードとなり、確かな地位を築くことになりました。
Adaの現在
現在、Adaは2012年に制定された、ISO/IEC 8652:2012が最新版です。このように、今なお、プログラミング言語としての進化は続けられています。しかし、その一方で、80年代に整備されたプログラミング言語であるため、当時としては進歩的だったものの、いまとなっては陳腐化しているという意見も出ています。
実際、F-22“ラプター”の後に開発され、日本の航空自衛隊でも運用されている戦闘機F-35“ライトニング II”では、Adaは不採用となっています。Adaの代わりにC++でシステム開発が行われたようです。
今後、Adaは暫時、利用が減っていく可能性が指摘されています。
まとめ:Adaの歴史で学ぶこと
Adaの歴史は「野心的なプログラミング言語が、誕生してから広まっていくまでの、一連の流れ」を知る良い材料だと言えます。
実際に業務で使うことはないプログラミング言語であっても、どういった特徴があり、これまで、どんな歴史を刻んできたのを知ることは、非常に意味があることです。
ぜひ、他の言語の記事もチェックしてみてください。