ストラウストラップの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++ 第4版」の優れた翻訳も読む楽しさを倍増させてくれています。
私は「プログラミング言語C++」の第2版、第3版も持っていますが、第2版は翻訳された日本語が難解で断念しました。
また第3版は翻訳自体は悪くないですが誤訳、誤植が多く、加えて電話帳のようにズッシリと重く、主に通勤時の電車で読むのですが、とても毎日持ち歩けるレベルではありません。
嬉しくて紙版と電子書籍版の両方を買ってしまいました。
今、楽しく読んでいます。
また、「C++によるプログラミングの原則と実践」は、出版社が異なるためかタイトルが異なるので分かりにくいですが「ストラウストラップのプログラミング入門」の最新版です。
しかし Kindle 版があるのは初版の「ストラウストラップのプログラミング入門」だけです。
しかも入門書であるにもかかわらず「C++によるプログラミングの原則と実践」は分厚く重量があり持ち歩ける代物ではありません。
そのため初版ではありますが「ストラウストラップのプログラミング入門」の Kindle 版も購入しました。
※とはいえ、原書でも2008年の出版なのでそこまで古くもないです。(日本語訳版は2011年)
現在こちらも並行して楽しく読んでいます。
追記:
kindle 版は今のところ出ていませんが、達人出版会さんから電子書籍版(PDF、EPUB)が出ていました。
https://tatsu-zine.com/books/cpp-programming
更に追記:
「C++によるプログラミングの原則と実践」は kindle 版も出たようです。
※「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日