| ビジネス | WinDbg入門 | Windowsカーネル分析ノート |
前回に引き続き、次のPDF論文の一部を紹介します。
C++の学び方
本連載では、C++の設計者であるBjarne Stroustrup氏の「C++学習論」を紹介しています。今回からは本連載のまとめに入ります。
これは筆者の想像ですが、「C++の学び方」という連載タイトルを見た多くの人は、"分かりやすい単純なサンプルコードが多数紹介され、プログラムの具体的な作り方や手順が理解できるのではないか"と想像されたのではないでしょうか(たとえば、本「IT談話館」のこの連載やChuck Allison氏のこのような連載)。はっきり申し上げます。基礎を持たない(JavaやC#などを生み出したC++の歴史や考え方に触れていない)人にとっては、そのような文法ベースのアプローチは、大変危険です。いつまでたっても初心者のレベルを抜けないばかりではなく、遅かれ早かれ挫折する運命を引き受けることになります。
このGroovyのホームページを開くと、Pythonへの言及がなされています。Pythonのホームページを開くと、それはオブジェクト指向プログラミング言語であることが強調されています。また、PHP5の設計者のこの主張を読むと、PHPはバージョン5から"Java仕様を参考にし、本格的なオブジェクト指向言語を目指す"と宣言されています。"分かりやすい単純なサンプルコードを多数紹介しながらプログラムの作り方を説明する"アプローチは、このような現代の大きな流れをプログラミング学習者から隠ぺいしてしまう危険性があります。現在主流となっているほぼすべての言語はオブジェクト指向を強調しています。JavaScript 2.0やActionScriptも同じ方向を向いています。しかし、オブジェクト指向への一方的な傾斜を冷静に眺め、(否定するのではなく)その限界に警告を発している人は極めて少ないものです。その点、Stroustrup氏は、"オブジェクト指向は選択肢の一つ"と言い切っています。この論文は1995年に公開されたものですが、筆者は今でも時折目を通しています(そして、目を通すたびに、感動しています)。
筆者は時折、"J2EEは難しい!"と叫ぶJava開発者の存在を知っています。WebLogicやWebSphereといった開発実行環境が人気を博している事実も承知しています。そして、Stroustrup氏のこのようなJava評価も理解しています。筆者は思います。C++設計思想に触れておくことは大切である、と。なぜなら、多くの言語の根は、そこにあるからです。
それでは、本日の本論に入りましょう。本日は、10ページの「5. Summary」の第1段落の内容を検討します。この段落では、次のような点が強調されています。
・C++学習者はCや初期C++に見られる低レベルプログラミングは避けるべきである。
・C++学習者はライブラリを使用し、抽象度を高めるテクニックを学ぶことが大切である。
・標準ライブラリなどの実装方法が異なるのは好ましいことではない。
・現在利用できるライブラリの数は足りない。
ご覧のように、この段落で強調されているのは、ライブラリというものです。ライブラリという視点からIT業界を眺めると、ライブラリを使う人とライブラリを作る人がいます。この組み合わせはほぼすべての言語と開発環境で共通しています。つまり、C++を学ぶ人は、まず、ライブラリの使い方を学ぶことといってよいでしょう。あるいは、ライブラリというものの存在とその意味を理解することといってよいでしょう。少なくとも、文法を覚えることではありません(店頭に並ぶ書籍のほとんどはこちらを向いています)。文法中心のアプローチでは、Java、C#、PHPなどを利用できるようになるまで、かなり遠回りすることになるでしょう(また、退屈と不合理な飛躍を余儀なくされ、途中で挫折してしまうでしょう)。言語文法ではなく、なぜライブラリが必要であり(表現力)、それをどのように利用するか(発想)を学ぶことが大切です。
ライブラリの使い方(プログラミングスタイルとテクニック)を覚えること。まずこれが大切です。
| WinDbgアプリケーション開発独習講座 | ホーム |