ストラウストラップのC++の本の話

私は職業プログラマーではなく、趣味の範囲ですが、プログラミング言語C++の生みの親であるストラウストラップのファンです。
現在購入できるストラウストラップの日本語訳された本は以下の4冊です。(古本を除く)

  • プログラミング言語C++ 第4版(SBクリエイティブ)-> The C++ Programming Language (4th Edition)
  • ストラウストラップのプログラミング入門(翔泳社)-> Programming: Principles and Practice using C++ (1st Edition)
  • C++によるプログラミングの原則と実践(KADOKAWA/ドワンゴ)-> Programming: Principles and Practice using C++ (2nd Edition)
  • C++のエッセンス(SBクリエイティブ)-> A Tour of C++
※->の後ろは原書名

その内、Kindle 版があるのは以下の2冊です。

Kindle 版あり

  • プログラミング言語C++ 第4版
  • ストラウストラップのプログラミング入門
以下は今のところ電子書籍版はありません。

紙の本のみ

  • C++によるプログラミングの原則と実践
  • C++のエッセンス
彼の著書はC++の生みの親だけあって、プログラミング技法やC++の仕様については網羅し尽くされていますが、それだけではなく、プログラミングやプログラマー、ソフトウェアとは?という点についても卓越した見識を持っており、それが著書の随所に見られます。
ある意味カリスマ性があり、彼の著書はただのプログラミング言語の解説だけではない、読み進めていく楽しみがあります。

また、「プログラミング言語C++ 第4版」の優れた翻訳も読む楽しさを倍増させてくれています。
私は「プログラミング言語C++」の第2版、第3版も持っていますが、第2版は翻訳された日本語が難解で断念しました。
また第3版は翻訳自体は悪くないですが誤訳、誤植が多く、加えて電話帳のようにズッシリと重く、主に通勤時の電車で読むのですが、とても毎日持ち歩けるレベルではありません。

分厚いのは第4版も同じであるため、素晴らしい翻訳の最新版が Kindle で出た事は、望外の喜びでした。

嬉しくて紙版と電子書籍版の両方を買ってしまいました。
今、楽しく読んでいます。

また、「C++によるプログラミングの原則と実践」は、出版社が異なるためかタイトルが異なるので分かりにくいですが「ストラウストラップのプログラミング入門」の最新版です。
しかし Kindle 版があるのは初版の「ストラウストラップのプログラミング入門」だけです。
しかも入門書であるにもかかわらず「C++によるプログラミングの原則と実践」は分厚く重量があり持ち歩ける代物ではありません。
そのため初版ではありますが「ストラウストラップのプログラミング入門」の Kindle 版も購入しました。
※とはいえ、原書でも2008年の出版なのでそこまで古くもないです。(日本語訳版は2011年)
現在こちらも並行して楽しく読んでいます。

追記:
kindle 版は今のところ出ていませんが、達人出版会さんから電子書籍版(PDF、EPUB)が出ていました。
https://tatsu-zine.com/books/cpp-programming

更に追記:
「C++によるプログラミングの原則と実践」は kindle 版も出たようです。

「C++のエッセンス」についても紙媒体のみですが、「プログラミング言語C++」があるので、今のところ購入する予定はありません。
※「C++のエッセンス」(A Tour of C++)は「プログラミング言語C++」に含まれています。

プログラミング言語C++第3版と第4版の違い

プログラミング言語C++第3版の目次は以下です。

イントロダクション
第1章 読者へのメッセージ
第2章 C++ひとめぐり
第3章 標準ライブラリひとめぐり

第1部 基本機能
第4章 型と宣言
第5章 ポインタ、配列、構造体
第6章 式と文
第7章 関数
第8章 名前空間と例外
第9章 ソースファイルとプログラム

第2部 抽象化メカニズム
第10章 クラス
第11章 演算子の多重定義
第12章 派生クラス
第13章 テンプレート
第14章 例外処理
第15章 クラス階層

第3部 標準ライブラリ
第16章 ライブラリの構成とコンテナ
第17章 標準コンテナ
第18章 アルゴリズムと関数オブジェクト
第19章 反復子とアロケータ
第20章 文字列
第21章 ストリーム
第22章 数値演算

第4部 C++を使った設計
第23章 開発と設計
第24章 設計とプログラミング
第25章 クラスの役割

一方、プログラミング言語C++第4版の目次は以下です。

第Ⅰ部 はじめに
第1章 本書の読み進め方
第2章 C++を探検しよう:基礎編
第3章 C++を探検しよう:抽象化編
第4章 C++を探検しよう:コンテナとアルゴリズム編
第5章 C++を探検しよう:並行性とユーティリティ編

第Ⅱ部 基本機能
第6章 型と宣言
第7章 ポインタと配列と参照
第8章 構造体と共用体と列挙体
第9章 文
第10章 式
第11章 主要な演算子
第12章 関数
第13章 例外処理
第14章 名前空間
第15章 ソースファイルとプログラム

第Ⅲ部 抽象化のメカニズム
第16章 クラス
第17章 構築と後始末とコピーとムーブ
第18章 演算子の多重定義
第19章 特殊な演算子
第20章 派生クラス
第21章 クラス階層
第22章 実行時型情報
第23章 テンプレート
第24章 ジェネリックプログラミング
第25章 特殊化
第26章 具現化
第27章 テンプレートと階層
第28章 メタプログラミング
第29章 行列の設計

第Ⅳ部 標準ライブラリ
第30章 標準ライブラリの概要
第31章 標準ライブラリの概要
第32章 STLアルゴリズム
第33章 STL反復子
第34章 メモリと資源
第35章 ユーティリティ
第36章 文字列
第37章 正規表現
第38章 文字列とストリーム
第39章 ロケール
第40章 数値演算
第41章 並行処理
第42章 スレッドとタスク
第43章 標準Cライブラリ
第44章 互換性

部で見ると、C++の仕様が増えた分、C++言語と直接関係のない「C++を使った設計」の部が4版では省かれています。それと各章末にあった「練習問題」も省かれています。この練習問題はC++の入門書の位置づけの「C++によるプログラミングの原則と実践」に移行したようです。

確かに「プログラミング言語C++」はC++言語の解説に特化した書籍であるべきで、設計などの上流工程や練習問題は冗長かなと個人的には思います。第4版はより言語解説に特化した書籍となっています。

お勧めの読み方

何しろ膨大な分量のある書籍であるため最初から読み進めていくのもいいですが、C++の基本的な知識があるなら興味のある章から読むのも手です。

特に重要で面白いのは「第Ⅲ部 抽象化のメカニズム」です。C++言語の核心部分と言ってもいいでしょう。

あと、気長に読みましょう。

公開日:2016年11月18日

記事 > C++の書籍 > ストラウストラップのC++の本の話

他の記事も見る

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