C++関連書籍

C言語を使うと自分の足を誤って撃ち抜いてしまうことがある。 C++を使えばそのような間違いを犯しにくくなる。しかし、やってしまったときには足全体が無くなる。
Bjarne Stroustrup

C組み込み系ではまだまだC言語が主流ですが、オブジェクト指向とともにC++も徐々に広まってきています。最近も知り合いから「プロジェクトでC++を使うことになったんだけど、おすすめの本ってない?」と聞かれることがありました。Webだけでも十分情報は集まりますが、活字の形の方が便利なこともあります。
そこで、今回は個人的におすすめのC++本を紹介したいと思います。

Effective C++ 原著第3版 スコット・メイヤーズ
4894714515 C++のバイブルとして評判の高い一冊です。その評価は、私も過言ではないと思っていますので、C言語の経験のある人にC++本を紹介する時は、必ずこの本を薦めています。
CからC++への移行する時のポイント、new演算子のオーバーロード、コンストラクタの挙動、オブジェクト指向設計等、C++プログラマなら知っておくべき内容で、かつ他の書籍では意外と触れられていないことが多い内容が、非常にわかり分かりやすく書かれています。
アスキーのHPでページサンプルのPDF(序章、第一章 CからC++への移行、第二章 メモリ管理)がダウンロードできます(※1)。

More Effective C++ ― 最新35のプログラミング技法Scott Meyers (アスキー)
4894714760 Effective C++の続編です。前回と比較してよりつっこんだ内容になっており、どちらかと言えば中級者以上向けとなっています。placement new、仮想コントラクター、スマートポインター、参照回数計測、プロキシークラス、二重ディスパッチなどの応用テクニック、例外機構の留意点等が詳しく解説されています。取り上げられている応用テクニックをそのまま使用することはないとしても、そのコーディングのテクニックや設計思想は、非常に参考になります(※2)。

プログラミング言語C++ 第3版Bjarne Stroustrup
プログラミング言語 C++これもまたC++言語のバイブルとされる一冊です。C++言語の開発者であるBjarne Stroustrupによって書かれたもので、C言語で言えば、K&Rのプログラミング言語Cのようなものと言ってもいいのではないでしょうか。ANSI/ISO C++の最終標準仕様について、templateに例外、STLコンテナからalgorithmまでC++仕様が網羅的に解説されています。
但し、内容が濃い分、非常に分厚い本なので、電車の中で気軽に読むなんてことはできません。内容もある程度の知識を前提として書かれているため初心者向けでもありません。しかし、文章は分かりやすく、内容も充実していますので、C++をある程度理解したら、是非とも本書を読破してほしいところです。 リファレンスとしても机の上に是非置いておきたい一冊です。

独習C++ ハーバート・シルト (翔泳社)
独習C++ 独習C独習Perlと同じ独習シリーズのC++版。著者も独習Cと同じです。私は独習シリーズを通読したことはありませんが、周りの評判が良さそうなのでとりあげておきます。このシリーズの特徴は、分かりやすさです。ですので、初心者の方は、まずこの本で概要を理解して、ある程度使えるようになったのちに、上の書籍でステップアップというのがいいかもしれませんね。

C++プログラミングの処方箋―ひと味違うコードを書くための99の鉄則 Stepehn C. Dewhurst
4798106321 プログラミングを学ぶ最もよい方法は、優れたコードを読むことです。しかし、逆に悪いコード、あるいは失敗例から学べることもまた多いものです。本書は、いわば陥りがちなアンチパターンの紹介と、そこから導かれる原則、テクニック等を紹介しています。自分で失敗すると身にしみて学習することはできますが、それには長い年月がかかります。まずは、人のふりみてわがふり直せということで、ここから学べることは非常にたくさんあります。ここで紹介している他の書籍程、紹介例を見かけない気がしていますが、もっと評価されてもよい良書だと思っています。
C++中心ではありますが、Cプログラマをはじめその他の言語を使うプログラマにとっても参考になるところは多いと思います。

Boost C++Librariesプログラミング 第2版 稲葉一浩
Boost C++ Librariesプログラミング 「C++標準」であるSTLは洗練されてはいますが、いまひとつかゆいところに手が届かない。物足りない。ということでC++言語標準化委員会メンバーが、さらに強力なライブラリを求めて作られたtemplateライブラリが「Boost」。本書はその「Boost」の日本語リファレンスといった内容です。気が付けば第二版がでていました。
まずSTLから、という方に関しては、「Effective STL―STLを効果的に使いこなす50の鉄則 (Scott Meyers)」あたりが定番でしょうか。

Modern C++ Design―ジェネリック・プログラミングおよびデザイン・パターンを利用するための究極のテンプレート活用術 Andrei Alexandrescu
4894714353 この本は入門書ではありませんのでご注意を。C++のtemplateを使いこなしたいという中・上級者向けの内容です。タイトルにも「究極のテンプレート活用術」とありますが、templateの特性を最大限に引き出すテクニックが満載です。しかし、あまりにトリッキーなため、実装を一読しただけでその意味するところを理解するのは常人では不可能です(できあがったパターンを利用するのは可能でしょうが)。よって、実際のプロジェクトで使う時には注意が必要かもしれません (^^;)。
本書については、templateを使った実装上のテクニカルな内容も圧巻ですが、ポリシーを基にしたクラス・デザインといった設計上の考え方等も一読の価値があります。C++、特にtemplateを極めたい人にとっては必読でしょう。

C++の設計と進化 Bjarne Stroustrup
C++の設計と進化私自身この本はまだ読んでいませんが、是非読んでみたいと思っていますので挙げておきます。C++の設計者であるStroustrup氏がC++言語自身の設計思想と開発経緯に関して語った本です。C++は非常に複雑な言語仕様から敬遠されることも多いですが、私はその強力な記述能力は好きです。多重継承も使い方によっては非常に便利な仕様です。ようは道具の使い方の問題です。
言語設計の背景と経緯を知ることは、言語を使う側にとっても有益でしょう。


※1 最初に紹介したときは第二版でしたが、第三版がでたので更新しました。
※2 2007/7に新訂版もでています。

コメント

非公開コメント

本のおすすめ

4873115655

4274065979

4822236862

4274068579

4822255131

B00SIM19YS


プロフィール

  • Author:proger
  • 組み込み関係で仕事してます

ブログ内検索