ビジネス WinDbg入門 Windowsカーネル分析ノート


CからC++を学ぼうとしないこと

 前回に引き続き、Bjarne Stroustrup氏の次のPDF論文の一部を紹介します。

C++の学び方


 本日取り上げる記事は、9ページの"One conventional answer ..."で始まる第2段落です。本連載は、ゆっくり進行してまいりますから、後日お時間のあるときに原文を自分なりに振り返られるとよいでしょう。

 Bjarne Stroustrup氏や同氏の周辺にいる関係者の著作の多くは、日本語に翻訳され、出版されています。しかし、多くの場合、"読みにくい"との評価を受けているのが実情です。筆者はそのような翻訳作業に関与した経験はありませんが、"正確な翻訳は到底無理だろう"と悲観的です。C++はBjarne Stroustrup氏の世界観の表現だからです。後の回で詳しく触れますが、同氏は、哲学や歴史に造詣が深く、それらを土台にしてC++を設計しています。このため、同氏の著作内には、技術用語を基礎付ける哲学が潜んでいます。同氏が使用する用語はすべて、"その場の思い付き"や"先人の受け売り"ではありません。このため、同氏の考え方や"信念のようなもの"を理解していない人は、同氏の著作物を翻訳したり、その内容を理解することは到底不可能と思います。これは予断ですが、MicrosoftのVC++アーキテクトの一人であるHerb Sutter氏は、Stroustrup氏の指導を受けている一人です(参照)。

 さて、第2段落の意味を考えてみましょう。この段落は、"C++の何をまず学ぶべきか"への回答を用意しようとしています。Stroustrup氏は、"C++のC部分を学ぶこと"という一般的な意見には同意できない、と述べています。また、"オブジェクト指向プログラミングを学ぶこと"という世間一般の認識も退けています。同氏は次のような認識を示しています。

・低レベルな技術詳細を学ぼうとしないこと(C的発想の否定)
・オブジェクト指向プログラミングを学ぼうとしないこと(OOP信仰の否定)
・プログラミングスタイルとプログラム設計に注目すること

 C++学習を始める場合、「C的な発想」と「OOP信仰を捨てるべし」、と説きます。ただ注意していただきたいのは、これらの2点(CとOOP)を否定しているのではないことです。ここではC++の初学者の取るべき態度を説いていることに注意してください(CとOOPへの過度の入れ込みへの警告)。

 上の認識内容には、"プログラミングスタイル"と"プログラム設計"が強調されています。皆さんの多くは、"それって何?"という状態に入っておられると想像されますが、後の連載回で次第に明らかになります。本日は、"ちょっと変わったことを言っているなぁ"、という程度の印象を頭の隅に残しておいてください。

 すでに触れたように、この論文は1999年に公開されています。Stroustrup氏は1979頃からC++設計に着手していますが、この論文はほぼ20年経過した段階での認識を示していることになります。C++は同氏の世界観の表現です。ご承知のように、人が持つ世界観は加齢とともに深まります。この論文には、20年分の加齢の成果が出ていると考えてよいでしょう。

 1993年春に公開されたこの論文では、C++学習方法として、次のようなことを述べています。

" In my experience the safest bet is to learn C++ ``bottom up,'' that is first learn the features C++ provides for traditional procedural programming, the ``better C'' sub-set, then learn to use and appreciate the data abstraction features, and then learn to use class hierarchies to organize sets of related classes. "

 ご覧のように、"まずC++のC的要素を学び、次に、データの抽象化、そして、クラス階層を学ぶのがもっとも安全である"、と述べています。この論文は、1993年春に公開されたものですが、1999年発表の論文と多少異なる認識を示しています。1993年当時はまだ、STLと略称される標準テンプレートライブラリが存在しなかったからです。

 Stroustrup氏の認識内容は1993年当時と1999年ではかなり異なっていることを学びましました。一見すると矛盾するようですが、世界観の深まりと世界観の具現化には時間が必要です。筆者は、Stroustrup氏とC++を考える場合、1994年という年を重視しています。同氏は、1994年「The Design and Evolution of C++」(D&E)を完成し、C++に関する自分の考え方を整理しました。D&E出版後の同氏の発言内容は(恐ろしく)安定しています。C++の習得が難しいとすれば、そこに設計者自身の世界観と哲学(悪く言えば、一方的な思い込みや信念、あるいは、個性)があるからです。
前へ | 次へ




 WinDbgアプリケーション開発独習講座  ホーム


Copyright©豊田孝 2004- 2008
本日は2008-11-22です。