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


概念とテクニックを学ぶこと

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

C++の学び方


 私たちが現在読んでいる公開論文は1999年に一般公開されたものです。時間的には、かなり前に公開された論文ということもあり、"その内容はちょっと古いのではないか?"と思ってしまう人もいることでしょう。はっきり申し上げます。それは、杞憂です。詳しくは後の回で触れますが、C++はBjarne Stroustrup氏の世界観の表現です。人の世界観は、前回触れたように、加齢とともに深まるものです。しかし、その本質は5年や10年で変化するものではありません。たとえば、C++には"class"というキーワードがあります。皆さんはなぜこのキーワードがC++に導入されたと思いますか。このキーワードは元々はノルウェー生まれのSimulaというプログラミング言語で使われていました。ちなみに、Stroustrup氏は隣国デンマーク出身です。

 Stroustrup氏は、"type"というキーワードを導入しようかと悩まれたようです。しかし、新しいキーワードの導入は学習者(開発者)に余分な負担を掛けることになります。このため、classというキーワードはSimulaからそのまま受け継がれたのです。同氏は、C++を設計しながら、C++を使用するプログラマの負担というものを胸のうちにきちんと仕舞い込んでいてくれたのです。ご承知のように、classというキーワードがなければ、現在のIT業界は存在しません。開発者に余分な負担をかけない。開発者の立場を考慮する。これらはC++設計思想の一部であり、5年や10年どころか、永久に変わることのない考え方です。

 さて、本日は、9ページの「For programming novices...」で始まる段落を検討します。段落を一瞥すると分かりますが、programming technique、concept、programming styleといった、どちらかといえば抽象的な用語が並んでいます。Stroustrup氏は、これらの用語に加えて、idea、ideal、design、generarity、efficient、elegantなどという抽象概念も多用します(2006年1月2日に一般公開されたこの論文は次期C++仕様に関するものですが、これらの抽象用語が至る所に散りばめられています)。筆者はこのような抽象用語で構成される技術論をたいへん頼もしいものと思っています。"このようにサンプルコードを書きましょう"、"この構文はとりあえずこのように覚えてください"という、きわめて薄っぺらな技術論が横行している現在、筆者は同氏の論文に接すると、心の安らぎさえ覚えます。本段落では、次のようなことが述べられています。

・プログラミング初心者(programming novice)は、効率的なプログラミングテクニックを学ぶ必要がある。
・C++を初めて学習する人は、C++の効率的なプログラミングテクニックと表現力を学ぶ必要がある。
・経験豊富なプログラマは、C++の効率的な表現力を学ぶ必要がある。
・すべてのC++学習者は、概念とテクニックの理解に時間を消費すべきである。
・詳しい文法の意味にとらわれるのではなく、C++固有のプログラム設計機能とプログラミングテクニックを学ぶ必要がある。

 ご覧のように、C++のコーディングテクニックや文法を学べ!、とは主張していません。筆者は、"CプログラマのためのC++入門"などと銘打った書籍を書店で目にしたり、自分でも購入して一読した経験があります。正直、読めるものではありませんでした(読むに値しないばかりか、害があるとさえ思いました)。この段落に登場する「概念」や「テクニック」については、以降の連載ではっきりしますから、ここでは詳しく説明しません。Bjarne Stroustrup氏は、この小さな論文の中では、C++は次のようなプログラミングスタイルをサポートしている述べています。

C-style programming 
 C++ is a better C, maintaining C’s flexibility and run-time efficiency
while improving type checking;

Data abstraction
 the ability to create types that suit our needs;

Object-oriented programming
 the idea of programming with class hierarchies and runtime polymorphism;

Generic programming
 programming using type parameterization of both data types and algorithms.

 この論文は、2002年1月に公開されたものですから、かなり新しい論文の一つです。注意していただきたいのは、オブジェクト指向プログラミングはC++の提唱するプログラミングスタイルの一つにすぎない、ということです。私たちは、好みのスタイルを選ぶ必要があります。選んだスタイルと他のスタイルを組み合わせる必要もあるでしょう。このような選択作業はかなり難しいといってよいでしょう。細かな文法を覚え、サンプルコードをひたすらなぞっているのでは、スタイルを選択する能力はまず身に付きません。必要なのは、"「概念」、「テクニック」、および、「プログラミングスタイル」"をまず学ぶことです。ただし、これらの情報を分かりやすく提供してくれる参考図書は極めて少ないのが現状です。学習図書の選択には注意が必要です。選択を間違えると、それは挫折への道を選択したことになります。こうしたこともあり、Stroustrup氏は、2008年8月、C++入門書を出版します。
前へ | 次へ




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


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