連載の目的と学習範囲
本連載は「C++の学び方(実践編)」というタイトルを持ち、閲覧対象者層をかなり広めに設定しています。そこでまず、本連載の目的と学習範囲を次のように整理しておきます。
現在のソフトウェア業界は、C++設計思想の影響を受けている。本連載では、単純なソースコードを示しながら、C++の設計思想を紹介する。
現役プログラマの方は、"自分は実装工程に興味があるのだから、別段、C++設計思想などを学ぶ必要はない!"と判断してしまう傾向があります。筆者はその傾向を非難しませんが、多少の注意も必要です。
C++プログラミング自体に夢中になっている段階では、C++の設計思想を知りたいなどと当然考えないものです。"C++設計思想などの座学的な学習は退屈であり、オーバーヘッドである!"、と映っているはずです。プログラミングを覚えたての頃は、コードを書き、それを実行することが楽しくて楽しく仕方がないものです。
ここで興味ある話を一つ紹介しておきます。C++設計者のBjarne Stroustrup氏は、1994年に出版した書籍「The Design and Evolution of C++」(D&E)の中で、次のような発言を行っています。
Syntax matters(often in perverse ways)
この文の真意は、次のようなものです。
"C++構文を学ぶことは重要であるが、それ以上に、C++設計思想を学んでほしい!"
すべてのC++構文は重要な意味を持っています。ところが、構文によっては、複雑怪奇な姿をしているものもあります。分かりにくい、醜い構文、というわけです。Stroustrup氏は、その醜さは結果的に偶然そうなったのではなく、自分が意図的にそのようにした(つまり、設計した)、と述べています。
C++構文の「醜さ」は重要な意味を持っています。自分の書いたコードを後日改めて眺めているとき(コードレビュー)、醜いコードに自然に視線が向きます。これは、「醜いコードは人の注意を引き付ける」という重要な役割を持っていることを意味します。このあたりの事情に興味のある方は、この記事を精読されるとよいでしょう。醜さは赤い危険信号のようなものなのです。
本連載がカバーする学習範囲。それは次のようなものです。
・C++は"ベターC"であることを説明する。
・C++の"データ抽象化機能"を説明する。
C++とはそもそもどのような言語なのか。CとC++はどのような関係にあるのか。そして、どのような違いがあるのか。本連載では、言葉ではなく、単純なソースコードを分析しながら、C++の設計思想に触れていただきます。
前へ |
次へ
Copyright©豊田孝 2004-
2008
本日は2008-11-22です。