ビジネス WinDbg入門 アクティブなスレッドと非アクティブなスレッド


Bjarne Stroustrup氏とプログラミング言語C++定義

 「C++プログラミング言語の歴史と特徴」連載第6回目の今回も前回に引き続き次の公開論文を精読していきます。

第1回連載資料論文

 本日は、「2.1 C++ Design Aims」節の意味を考えます。この節は、1994年発行の「The Design and Evolution of C++」(以後「D&E」と略記)の第4章から取られています。「D&E」の第4章の「はじめに」では、RuleとPrincipleという2つの単語にわざわざ触れ、次のようなことを述べています。

 "Principle(原則)は、うぬぼれの強い単語である。この単語は、例外を一切認めようとしない。C++では、Rule(規則)がプログラマの実際の経験にそぐわない場合、その規則は意味を失う。C++はプログラマの経験を重視する"

 いかがでしょう。ここで皆さんに覚えておいていただきたいことは、Bjarne Stroustrup氏の性格です。同氏は、観念論を敵視し、現実を重視します。このため、C++言語の設計上のRule(規則)ではあっても、新たな現実の要求が発生すれば、必要に応じRuleは変更される、と述べているわけです。表現を変えれば、プログラマとその経験をなによりも尊重し、プログラマのニーズを満たすためにC++は存在する、というわけです。ただし、Rule(規則)を軽々に変更するようなことはしない、とはっきり述べています。裏を返せば、C++規則は慎重に考え抜かれた上で定められたものである、ということです。

 それではここで多少時間をかけて表を眺めてください。表には次のようなことが記述されています。

・C++は、プログラミング作業を楽しくする
・C++は汎用プログラミング言語である
・C++はベターなCである。
・C++は「data abstraction」をサポートする
・C++はオブジェクト指向プログラミングをサポートする
・C++は「generic programming」をサポートする

 英語で表記した項目の意味は、連載回が進むにつれてはっきりしていきます。現時点ではいつものように、英文のままにしておきます。この表自体の構成は、1994年当時と変化しておりません。さらにいえば、書籍「D&E」の内容を改定する予定はあるのか?と最近問われ、Stroustrup氏は、"その必要はない"と応じています。10年経っても本質(Stroustrup氏の世界観)は変化していない、というわけです。

 それでは、表の中身を少し詳しく見てみましょう。公開論文には、「C++ makes programming more enjoyable for serious programmers」という表現があります。問題は「serious programmers」の"serious"の意味です。この形容詞は辞書を引いてみると、まじめな、深刻な、重大な、などの意味を持っていることがわかります。筆者は、serious programmerを次のように考えています。

"serious programmerとは、解決すべき問題を懸命に理解し、それを自分なりになんとか表現しようとするプログラマ"

 筆者が知る限り、「D&E」を執筆している段階では、たいへん微妙なところなのですが、Javaの動きはそれほど目立っていないと思われますから、Javaの動きはこの段階では考慮する必要はないと思います。ご承知のように、Stroustrup氏は、Javaとその設計思想を快く思っていません(同氏のJavaコメント)。Javaは、C++を否定するような形で誕生しています。ちなみに、Microsoft社のC#は、"限りなくC++に近い、オブジェクト指向言語"として誕生しています。プログラミング言語誕生の背景は、このように結構複雑なのです。Stroustrup氏の強烈な個性を考えると、Javaが歓迎されないことは簡単に推測できます。

 余談が長くなってしまいました。表内の残りの項目は、徐々に説明していきます。ただ、「data abstraction」と「オブジェクト指向プログラミング」がそれぞれ個別にリストアップされている事実はきちんと理解しておいてください。「data abstraction」は簡単に言ってしまえば、クラスをはじめとする「型」作ることですが、クラスを作るだけではオブジェクト指向プログラミングになりません。この2つ(クラスを作ることとオブジェクト指向プログラミング)は明確に区別されますから、きちんと覚えておきましょう。なお、クラスを作ることを、"ユーザによる型定義"(UDT)と呼ぶことがあります。より詳しい説明は、後の回で行います。

 本日の内容は、もしかすると、難しかったかもしれません。Stroustrup氏のすべての論文にいえることですが、一文たりとも軽視することはできません。ここで皆さんにお願いですが、この連載を読む場合、技術的な知識を増やそうと先を急ぐのではなく、プログラミング言語C++の設計者の性格や人となりに接してみよう!、という姿勢で臨んでください。C++の構文知識ではなく、設計者の人となりを知ってみよう!、という野次馬的な姿勢で臨んでください。知識は後から自然に付いてきます。

前へ | 次へ



 WinDbgスクリプティング講座  ホーム


Copyright©豊田孝 2004- 2008
本日は2008-12-04です。