C、C++、そして、Java
本連載では、Bjarne Stroustrup氏(Mr.BS)のWebサイトから一般公開されている記事を参考にしながら、3つのプログラミング言語(C、C++、および、Java)それぞれの設計思想と特徴を学びます。
3つのプログラミング言語の設計者の声に直接耳を傾け、"Cファミリーに属するプログラミング言語と設計思想"について時間をかけてじっくり考えてみたいと思います。本連載を最後まで読むと、「IT業界の根底にある流れ」が信じられないほど鮮明に浮かび上がってきます。
今回は第1回目ということもあり、本連載で取り上げる記事がどのような背景と意味を持っているのかをまず整理しておきます。
次回から検討していく記事は、2000年初夏の頃に行われた座談会の様子を描いていています(実際には座談会風に編集されている)。その座談会には、3人の伝説的な人物が同席し、"C言語ファミリ"一般を論じます。出席者は、Dennis Ritchie氏、Bjarne Stroustrup氏、Games Gosling氏の3人です。これら3人の紹介は不要かと思います。
皆さんの中には、"プログラミング言語設計者の考え方や人柄を知って何か得することでもあるのか?"と思われている方もいらっしゃるはずです。結論を申し上げれば、"得することは一杯"あります。すべてのプログラミング言語は人が考え出したものであり、考え出した人の個性や人柄が反映されているのが自然です。また、多くのプログラミング言語は、それ以前のプログラミング言語を分析し、新しい時代の流れを反映するように作られています。以降の連載を読まれるときには、"私たちと同じ人間である言語設計者たちはいったいどのような視点からソフトウェアを捉えていたのか?"という素朴な疑問を心のどこかにしっかりとどめおかれるとよいと思います。
座談会が開かれた2000年初夏の頃といえば、Cは1989年、C++は1998年8月にISO/ANSI標準プログラミング言語としてそれぞれ承認されています。JavaはISO/ANSI標準プログラミング言語になることを断念し、「事実上の標準(de facto standard)」への道を歩むことになります。C/C++、Java、および、C#の設計思想はそれぞれの連載で詳しく取り上げられています。
この座談会(3者鼎談)の司会を勤めているのはMicrosoftのVisual C++アーキテクトであるHerb Sutter氏です(豊田孝とSutter氏、Sutter氏の最新ブログ)。
この記事では、3つのプログラミング言語を次のように定義しています。
・Cは、組み込みシステム分野で活躍する言語であり、その影響は広範囲に及んでいる
・C++は、現在もっとも普及している言語であり、オブジェクト指向とジェネリックプログラミングをサポートする
・Javaは、クライアントからサーバーアプリケーションまで活躍の場を広げ、「事実上の標準」言語を目指している
3つのプログラミング言語の2000年当時の位置付けを単純に整理してみると、Javaの特異な立場がはっきりします。論文内には、"Sun has recently decided that Java can best flourish as a de factor standard, instread of as a formal ISO/ANSI or ECMA standard, ..."という表現が見られます。この文は、"Sunはthat以下のことを決定した"ということですから、当時の米国IT業界では、"Javaは(国際標準言語ではなく)Sunの所有言語"という認識が一般的であったことが分かります。
ご承知のように、Sunは米国時間2004年4月2日午前4時15分頃、Microsoftと和解しました。筆者は、"Javaは今後どうなるのだろう?"と素朴な疑問を持ちました。いろいろ調べてみると、一般のJava開発者は和解の成り行きや今後の動きなどを(2004年4月14日当時は)一切聞かされていなかったようです。一部の有力Javaサポータは、インターネット上で不満を述べています。
Javaは1995年に発表されています。2000年時点ですでに5年の歴史を持っていることになります。ちなみに、Cは30歳、C++は20歳といったところです。見方によっては、Javaは5年という短い期間で劇的な成長を見せたプログラミング言語と言ってもよいでしょう。お三方の間でどのような議論が交わされるのか本当に楽しみなところです。
C++の学び方(理論編) |
次へ
Copyright©豊田孝 2004-
2008
本日は2008-12-04です。