Bjarne Stroustrup氏の性格
「C++プログラミング言語の歴史と特徴」連載第3回目の今回は、前回に引き続き次の公開論文を精読していきます。
第1回連載資料論文
この論文は、「An Overview of the C++ Programming Language」というタイトルを持ち、1999年に公開されたものです。閲覧者の皆さんの中には、もしかすると、"1999年の論文内容は古くて役に立たないのでは?"と不安を覚えている人もいらっしゃるかと思います。結論を申し上げれば、そのようなことはありません。
本連載は、表面上はC++の基礎を学ぶ連載といえますが、実質的にはC++のエッセンス(設計思想)を学ぶための連載です。C++のエッセンスを学んでおくと、JavaやC#の設計背景などもかなり理解できるようになります。これら2つの言語(と、PHPをはじめとする多くのプログラミング言語)は、C++をベースにしています。表現を変えれば、最近の多くの言語は、C++の軽量版言語という性格を持っていると考えてよいのです。本日は、前回に引き続き、「1 Introduction and Overview」の第2段落の内容を検討します。
第2段落は、この公開論文の内容とその説明順序を明らかにしています。説明順序は、次のようになっています。なお、ステップ1は公開論文の「第2節」、ステップ2は「第3節」などに対応します。
ステップ1: The Design and Evolution of C++
ステップ2: The C Programming Model
ステップ3: The C++ Abstraction Mechanisms
ステップ4: Large-Scale Programming
ステップ5: The C++ Standard Library
さて皆さん、この説明順序を眺めてどのようなことをお感じになりますか?このリストは、C++概要をすべて網羅しているとともに、Stroustrup氏の几帳面な性格をよく表しています。特にステップ1は、C++を設計した本人だけが書ける内容です。結論を急げば、ステップ1の内容は、Stroustrup氏が1994年に発表した「The Design and Evolution of C++」(通常、D&Eと略称)という書籍の内容を簡潔に整理したものです。
Stroustrup氏は、「D&E」の中で、自分は歴史や哲学書の愛読者であることをはっきりさせています。つまり、Stroustrup氏は、"プログラミング言語というのはこうあるべきだ"、"プログラミング言語の設計者というのはこうあるべきだ"、という哲学を持っているのです。さらにいえば、Stroustrup氏は確かにC++を設計した本人ですが、設計しただけではこれだけの内容を誇る論文をそう簡単に書けるものではありません。C++を設計し、それを世に送り出し、その後の発展(国際標準化)作業に積極的に関与しない限り(つまり、常に問題意識を持っていない限り)、これだけの内容を持つ論文を用意することなどできません。
ここでは、次のような用語を覚えておきます。
Programming Model
Abstraction
Standard Library
これら3つの用語がどのような意味を持っているかについては、連載回が進むにつれ、自然に明らかになっていきます。焦らないようにしましょう。上のステップリストの4は、Large-Scale Programmingとなっています。これは直訳すれば、"大規模プログラミング"ということになりますが、意味としては、大きなソフトウェアの開発を支援するためのC++機能ということです。現役開発者の方で、特にオブジェクト指向ベースのソフトウェア開発に興味のある方は、ステップ3を辞書を引きながら、精読しておくとよいかもしれません。その際には、抽象(abstract)クラスとクラス階層が明確に分離されてることに注意してください。クラスはデータ表現の中心概念ですが、オブジェクト指向そのものではありません。Bjarne Stroustrup氏は、「クラス階層=オブジェクト指向」という立場を取っています。平均的な現役開発者の多くは、クラスを使うことが即オブジェクト指向プログラミングである、と考えているようですが、厳密にはそれは間違いです。JavaやC#は、クラス階層を前提とするオブジェクト指向プログラミング言語ですが、C++はクラス階層を前提としているわけではありません(この意味において、C++は汎用プログラミング言語やマルチパラダイムプログラミング言語と呼ばれています)。
前へ |
次へ
Copyright©豊田孝 2004-
2008
本日は2008-12-04です。