ストラウストラップの「C++によるプログラミングの原則と実践」について

これはプログラミングの技法書

C++言語の生みの親、ビャーネ・ストラウストラップ氏によるプログラミングの教科書です。 一応タイトルに「C++による」とありますが、基本的にはC++の言語解説というよりは、どのようにアプリケーションを作成するかについて述べられた書です。

ストラウストラップ氏のホームページ(https://www.stroustrup.com/programming.html)に記載されているとおり、プログラミング初心者のプログラミング入門を目的としており、各章末にはドリルや練習問題が設けられています。

これは、これまでプログラミングしたことがない人のためのプログラミング入門です。また、少しプログラムを作成していて、スタイルとテクニックを向上させたい、または単に最新のC++を習得したい人にも役立ちます。教室で使用するように設計されていますが、独学を念頭に置いて書かれています。この本のより簡単なバージョンは、テキサスA&M大学で、電気工学、コンピューターエンジニアリング、およびコンピューターサイエンスの学生向けの最初のプログラミングクラスの基礎として、ほぼ10年間、および他の多くの場所で使用されてきました。

※Google翻訳で翻訳

上記のように、元々この本はテキサスA&M大学でプログラミング授業のテキストとして使用されていたものであり、講師と共に学習することが前提で設計されたものを基に、独学用書籍として編成されたものです。そのため本当のプログラミング初心者が手にして講師なしで独学するには少しハードルが高い部分があります。

プログラミング初心者が読む上での注意と心構え

プログラミング初心者がこの本で学習する上で難しい点として、まずドリルや練習問題の答えがないこと、また順番に読み進めてもこれまでに登場しなかった構文や技法、ライブラリが用いられている点です。 従って読み進めていくと、突然「何このコード」「これは何のために何をやっているのか?」という疑問にぶち当たる可能性があります。

もちろん本全体ではC++の殆どの概念や構文の解説が網羅されてはいるのですが、章の順番(というより例題のコード)が適切ではないため、例えば始めの方に出てくる電卓プログラムではいきなり再帰関数やSTL(Standard Template Library)が登場し、1周目では理解しづらいかもしれません。

※C++は初めてでもC言語は熟知している人を対象にしているなら分かりますが、プログラミング入門者に対するサンプルプログラムとしては適切ではない気がします。

また、GUIアプリの章(第12章~第16章)では、元々C++言語自体には標準のGUIライブラリは存在しないため、恐らくクロスプラットフォームなFLTKライブラリを使用したのだと思いますが、そのせいかストラウストラップ氏独自のヘッダファイルをインクルードしてプログラムを作成することが前提となっており、実機でテストするのには少し手間がかかります。

Note厳密には第12章~第15章の4章はグラフィックス、第16章はGUIの章ですが、便宜上これらの章をGUIアプリの章としています。

ただ、GUIアプリも含めこの本で使用するヘッダファイルやサンプルコードはストラウストラップのホームページからダウンロード(https://www.stroustrup.com/programming_support.html)できます。

注意Webサーバの障害が起きたのか、初版のコードしか残っていないものもあるようです。初版に関しては全章のサンプルコードがダウンロードできます。

備考C++言語を用いたGUIアプリケーションであれば、Windows環境ならMFC(Microsoft Foundation Class)を使用した方が手軽だし、まだライブラリとしての需要もありそうですが、それではMFCの教科書になりかねず、MFCのAPIの解説もいやが応でもある程度しなければならなくなります。何よりMicrosoft社のOSやAPIに依存したアプリ作成の解説を氏が嫌ったのでしょう。であればむしろGUIの章は不要だったのではないかとも思えますが、冒頭に述べたように当書はあくまでもプログラミングの解説書であり、今のプログラミングにGUIアプリは外せないと考えたのではないでしょうか。FLTKアプリ開発の解説であればそれだけで1冊の本になるはずで、個人的にはGUIアプリの章を挿入したことで当書が少し中途半端になってしまった感は否めないと思います。

この本の評価

1周目はよく分からない点は読み飛ばし、2周目でその部分の理解を試みるという、読み方にちょっとしたコツが必要ですが、C++言語の生みの親による初心者向けの濃厚な解説がなされており、総じていえば、この本は紛れもなく良書です。

ストラウストラップといえば何と言っても「プログラミング言語 C++」が有名ですが、こちらはある程度C++を知っている人向けの、言語仕様の解説に主眼がおかれており、当書とは一線を画すものです。

この書について誤解の無いように補足すると、C++言語の入門書であっても、プログラミング自体の入門書ではありません。タイトルのどこにも「入門」とはありません。(ただ、初版本の邦題は「ストラウストラップのプログラミング入門」だったため誤解を招いたかもしれません)

また電卓プログラムも再帰関数を知っていれば理解できるでしょう。知らなければ訳がわかりません。そして再帰関数はC言語などでも使われる技法であり、C++固有の技法ではありません。筆者は再帰関数を知っているものとして話を進めています。つまり対象読者はC++は知らなくても、C言語の言語仕様や技法を熟知している人、と言えるでしょう。従ってプログラミング未経験の人はC言語を先に学んでからこの本を手に取った方が良いと思われます。

C++によるプログラミングの原則と実践(第2版)の目次

最後に当書の目次を載せておきます。

第0章 読者への覚書
第1章 コンピューター、人、プログラミング

第I部 基礎
第2章 Hello, World
第3章 オブジェクト、型、値
第4章 コンピューテーション
第5章 エラー
第6章 プログラムの記述
第7章 プログラムの完成
第8章 プログラミング言語の機能:関数、その他
第9章 プログラミング言語の機能:クラス、その他

第II部 入力と出力
第10章 入力ストリームと出力ストリーム
第11章 入力と出力のカスタマイズ
第12章 表示モデル
第13章 グラフィックスクラス
第14章 グラフィックスクラスの設計
第15章 関数とデータのグラフ化
第16章 GUI

第III部 データとアルゴリズム
第17章 vectorとフリーストア
第18章 vectorと配列
第19章 vector、テンプレート、例外
第20章 コンテナーとイテレーター
第21章 アルゴリズムとマップ

第IV部 視野を広げる
第22章 理想と歴史
第23章 テキストの操作
第24章 数値
第25章 組み込みシステムプログラミング
第26章 テスト
第27章 Cプログラミング言語
第28章 C++と日本語対応

第V部 付録
付録A 言語のまとめ
付録B 標準ライブラリのまとめ
付録C Visual Studioの使用
付録D FLTKのインストール
付録E GUIの実装

公開日:2021年12月31日
最終更新日:2024年01月17日

他の記事も見る

このページのトップに戻る