C++ スキルアップにおすすめの書籍
C++ スキルアップにおすすめの書籍
はじめに
C++ は、初学者と中級者のギャップが、とても大きい言語だと感じます。覚えることが多い(例えば、マニュピレーターって何?)割に、より平易なC言語との後方互換性が提供されているため、気をつけないとかなり経験年数を積んだ方でも、いつまでも「C++らしさ」が身につかず、 “better C” として記述している事例を散見します。
以下ではそんな轍を踏まないための、ステップアップ用の書籍を紹介いたします。
著者が最も技術書を読んでいたのが 2010 年頃のため、内容が古めです
disclaimer
ここでいう「中級者」は @yumetodo さんの定義 の入門者〜初心者程度です。
入門書
正直に言って入門書は、どれを選んでも問題ないと思います。デザインが読みやすい、表紙が気に入った、などの好みで、好きな本を選べばよいです。
あえて挙げるなら、私の身近な範囲では 独習C++ が定番して紹介されることが多いです。
Effective C++
中級向けの定番と呼べる一冊です。
C++ の入門書を終えた方や、 Java など他のプログラミング言語から移行するにあたって、理解しておくべき55の項目が、丁寧に解説されています。
発行が少し古いため、C+11 以降で導入された機構は織り込まれておりません。そのため細部はあまりこだわらず、復習は hatsusato さんのサマリ くらいの内容が頭に残っていれば十分でしょう。
C++ Coding Standards―101のルール、ガイドライン、ベストプラクティス
残念ながらピアソン桐原の技術書撤退で絶版となってしまいました。
Effective C++ よりも少し平易な内容ですが C++ としての重要なポイントを押さえており、合わせて読むと良いのですが…。
Effective Modern C++
Effective C++ の続編…ではなく、同著者によってまったく新規に書かれた本です。
C++11 以降大きく様変わりした新機能について、注意点を Effective C++ 同様のスタイルで解説しています。
同じスタイル、ということで、C++11 にどんな新機能があるかは予め理解しておく必要があります。その上で、それらの新機能を使いこなす上での注意点に対しての解説書であり、本書もまた簡単なものではありません。
本書もすでに発行から年数が経ち、 C++17/20 と進化していますが、最も大きなジャンプアップである C++11 には十分キャッチアップできる内容です。
Java言語で学ぶデザインパターン入門 マルチスレッド編
Java 向けの本ではありますが、マルチスレッドについて一冊丸々割いてわかりやすく解説している点で参考になりました。
当然 Java 固有の記述もありますが、大半は他の言語にも共通するパターンが紹介されています。
Java並行処理プログラミング
当時 id:higepon さん が推薦していて興味を持った本です。
synchronized
など Java 固有の記述もありますが、特に前半の基礎編では、他言語にも適用可能な並行処理の知識が得られます。
並列コンピューティング技法 もよさそうなのですが、未読です。
Google C++ Style Guide
コーディング標準は、インデントスタイルなど個人の好き嫌いがあり、議論を呼ぶ分野ですが、何よりプロジェクト内で統一されていることが重要です。
本規約は一つ一つの項目に採用理由が掲載されているため納得感を持って採用できることと、 Google のブランド力から、新規プロジェクトでの規約策定のスタート地点として、ぴったりです。
解説を読んでも十分に理解できないようであれば、その用語を検索することで、知識を深めることができるでしょう。
個人的には、繰り返し登場する「既存のコードとの一貫性を優先する」というスタイルが気に入っています。
組込みソフトウェア開発向けコーディング作法ガイド
IPA 発行の本ガイドブックは、単なるコーディング規約としてだけではなく、貴重な「べからず集」として読み進めることができます。
その他
C++ の歩き方 に多くの書籍紹介が載っており、 C++14 以降へのキャッチアップは、これらで学ぶのが良さそうです。
Discussion