和訳されているC++本はだいたいどれも大きなハズレではないのですが、僕がC++を学んだ時は定評のあるEffective C++から入りました。基本的な言語機能は適宜検索すればわかるので、どういうコードを書くべきでないかという観点から入れたのは自信を持ってコードを読み書きするには良いスタート地点でした。

https://www.amazon.co.jp/dp/4621066099

https://www.amazon.co.jp

Effective C++の中には今(C++11以降)となっては必ずしも通用しないベストプラクティス(使える場所ではconstにしよう、など)もあるのですが、なぜ過去は推奨されておりなぜ現在は推奨されていないかを把握したほうがより良いコードが書けるので古典から入るのはおすすめです。特にJVMもV8もBlinkもC++11以前から続いているプロジェクトなので古いベストプラクティスを学ぶ事はそれらの理解の助けになります。

この原著者のスコット メイヤーズ氏の著作はどれもとても良くて、C++11/14以降でアップデートされた本(Effective Modern C++)も書いています。こちらもとても評判が良いようです。

https://www.amazon.co.jp/dp/4873117364/

https://www.amazon.co.jp

Exceptional C++はC++で例外を使うのがいかに難しいかを本一冊かけて滔々と説いています。C++は言語レベルでガベージコレクションを持たない言語ですが、そこの上では例外を使うといかに発見が困難なバグを埋め込むかという事をこれでもかというほど書いています。人によってはこれを絶対読むべき本として挙げる人もいます。

https://www.amazon.co.jp/dp/4894712709

https://www.amazon.co.jp

C++テンプレートテクニックは上記の本ではあまり解説されていないテンプレートの技法をたくさん説明していて良かったです。SFINAEとかType ErasureとかCRTPあたりのテクニックはそれなりに大規模なC++プロジェクトでは常識のように使われているので、自分でゼロから書けなくても「なんか上手いこと行ってこうなるらしい」という事だけわかっていれば読む際にはどうにかなります。

https://www.amazon.co.jp/dp/4797376686

https://www.amazon.co.jp

本に限らずともC++を学ぶために有益なリソースはオンラインに無料で転がっていてGoogle C++ Style GuideはGoogle社内でC++を書く際の決まりごとです。ただのルールが列挙されているだけではなく、何のためにこうするのかという目的も逐一簡潔に書いてあるので勉強になります。またV8はGoogle C++ Style Guideに準拠して書かれているはずなので学んでおくと理解の助けになります。有志による日本語訳もありました。オンラインで全部読めます。

https://ttsuki.github.io/styleguide/cppguide.ja.html

最近僕が読んでいる物でいうとC++ソフトウェア設計という本がかなり良いです。デザインパターンというものがいかに誤解されているか、そしてC++20時代に於いてなお重要なパターンとその効用に絞って説明している稀有な本です。特に良いのが、パターンや言語仕様の説明のようなテクニカルな要素ではなく、大規模コードとその拡張可能な設計に焦点を当てる事を意識した本であるという点であり、これは血の通った知見であると感じています。SOLID原則について良くある誤解を例を挙げながら解説し、一つのデザインパターンでも実装上の選択肢があり、逆にほぼ同じコード構造でもプログラマの意図によって別のデザインパターンたりうる事を説明しています。駆け出しのプログラマがデザインパターンを使いこなすのは至難の技ですが、質問者様が挙げられているプロジェクトはそれらを使っているので読む際に何を意図したコードなのかを把握する手助けになります。

https://www.oreilly.co.jp/books/9784814400454/

C++ソフトウェア設計

本書は、ソフトウェアを設計する上で大切な39のガイドラインを提示し、広く認知されている重要な設計原則の真意を解説し、テスト/保守/拡張/再利用に優れたソフトウェアアーキテクチャを示します。長年にわたりその価値を実証して来た古典的デザインパターンを応用/発展させ、さらにその後に生まれた新しいデザインパターンとともに、Modern C++での活用方法を解説します。

https://www.oreilly.co.jp

C++にはRAIIとかRTTIとか略語が大量にあって僕も未だに知らないものがいっぱいあってこれを眺めているだけで面白いなぁと感じています。

https://quuxplusone.github.io/blog/2019/08/02/the-tough-guide-to-cpp-acronyms/

A C++ acronym glossary

Someone on Slack recently noted C++’s penchant for cryptic acronyms. So I thought I’d write down a glossary of the ones I’m aware of. I’m sure I forgot some. If you think of one I’ve missed, please let me know! (And no, I’m not adding DesDeMovA.)

https://quuxplusone.github.io

2023/12/31投稿
Loading...
匿名で 熊崎 宏樹 さんにメッセージを送ろう

利用規約プライバシーポリシーに同意の上ご利用ください

Loading...