キノコの自省録

テクノロジーとコンテンツの融合を目指して

今年読んだ本 - Effective Modern C++

ブログの更新をサボり過ぎということで、リハビリついでに2016年に読んだ本を適当に紹介。

今回はEffective Modern C++
https://www.amazon.co.jp/dp/4873117364

評価の通り、良い本でした。

内容紹介

C++プログラマから絶大な支持を集めるC++界のカリスマ、スコット・メイヤーズが、優れたC++プログラムはどのように書けばよいのかを指南。
C++をすみずみまで知り尽くした著者が、効果的かつ堅牢、移植性の高い優れたC++プログラムを書くノウハウを42項目にまとめています。
さらに上を目指したい中上級者必携の一冊です。C++11/C++14対応。

この内容紹介では少々わかりづらいですが、C++11/C++14で追加された新機能について、使用上のポイントを重点に42項目を記載した本です。

対象は内容紹介の通り、完全に中上級者向け。特にフレームワーク設計などの、C++ソフトウェアアーキテクト向けです。なぜなら、C++11で追加された内容は、overrideやラムダなどの便利機能はありますが、型推論や右辺値参照やユニバーサル参照(ムーブ)、constexpr、3種類のスマートポインタなど、フレームワークの柔軟性やパフォーマンスに特化したものが多いためです。
そして、この辺りの新機能は、よくわからないまま設計に使用してしまうと、わかりづらく、影響範囲の大きいバグを生み出してしまいます。
この本では、その辺りを、様々な使用シーンを想定して記載しています。


しかし、(C++98までの)C++が抱える課題を多少なりとも理解していないと、まったく何を書いているのかわからないと思います。
具体的には、コンストラクタ/デストラクタの仕組み、メモリコピーがいつ発生するか、例外規定、templateの型推論や従属型、といったあたりの知識がある程度要ります。
なお、この点については、Effective C++, Exceptional C++, Modern C++ Designなどに散発的に書かれています。Exceptional C++と、Modern C++ Designは日本ではピアソンとの契約の関係で絶版になっていますが、古本市場ではそれなりに出回っています。


ある程度C++がわかる人は、逆に読んでおいた方が良いと思います。特に、C++11/14は聞いたことがあるけど、中身はよく知らないという方は是非。C++11/14といった変態言語に興味を示す人ならば、おそらくアーキテクトとして将来を嘱望されている可能性が高いでしょうから、絶対に損はないと言えます。それに、C++11/14について書かれた日本語で読める本は、これと江添さんの本しか今現在ありません。


ちなみに、C++は闇の言語か否かみたいな小噺が書いてありますが、私からはなんとも言えません。
右辺値参照について説明しても、みんな怪訝そうな顔を向けるだけでした。。。