はじめに
本記事では、私が「C++のコーディングスキルを上げたい」、「初心者から脱して、中級者にスキルアップしたい」と思い、初心者から中級者(自称)にスキルアップを行うために読んだ書籍を紹介します。
私は、以下の3冊の本を読み進めることで、中級者になるための知識を蓄えました。
これら書籍の内容を理解することによって、ある程度C++関連の業務を円滑に進められるようになりました。
(書籍から知見を得た後に、コーディングによる実践で自分化することは重要、わかった気で終わらない。)
下記記事によると、「C++ 中級者」とは以下のような定義だそうです。
C++中級者とは Boost Range LibraryのOven拡張のようなoperator overloadテクニック(operator|を使ったメソッドチェインもどき)を自作でき、boost.asioを使え、C++11constexprの大変さを語れる状態である。また、継承を使いこなせており、なぜC++において継承だらけのプログラムをあまり見なくなったのかを自らの原体験を元に語れる状態である
本記事の通り、3冊の本を読み進めれば、「C++ 中級者」になるためのベースとなる知見は獲得できたと思います
(ただし、上記の定義だと、別途C++の実装の経験を積む必要性がある。)
読み進め方
- やさしいC++で図式的に概要を把握する
- ロベールのC++で詳細について理解する
- Effective C++でテクニックを習得
【図で理解】やさしいC++で図式的に概要を把握する
はじめに、やさしいC++でプログラミングを図式的に理解します。
C++初学者でも内容理解できるように、豊富なイラスト図解で、C++プログラミングの概要をイメージでつかむことに注力しています
プログラミング経験がなく、はじめての人にも、無理なくプログラミングの基本から学習してもらえるように、次の点を心がけています。
読みやすい解説でスラスラ読み進められます。
豊富なイラスト図解で、概念をイメージでわかるようにしています
- Good:複雑度の高いC++プログラミングの概要をイメージでつかむことに最適
- Bad:C++プログラミングの詳細を理解しきるのには力不足
【詳細を理解】ロベールのC++で詳細について理解する
ロベールのC++で詳細理解を深めます。
この本の特徴は、C++プログラミングに関して、「広く・深く」詳細解説がされていることに尽きます。
この本さえ押さえておけば、業務でC++を活用する場面でも、そうそう困ることは発生しなくなります。
過去のどの本よりもわかりやすく、丁寧に、かつ本格的な活用までを網羅した本来の意味での「入門書」です。
ただし、いきなり本書から読み進めることはおすすめしません。
「広く・深く」解説することに重きが置かれているため、ざっくりC++プログラミングの内容を理解することは不向きです。
一方で、「深く」説明するために、一つ一つの項目に対する解説が細かく、初学者を困惑させる元となると考えています。
そのため、事前にやさしいC++で図式的に理解することをおすすめしています。
- Good:C++プログラミングの網羅性が高く、基本的知識のすべてを網羅することができる
- Bad:難度が高い内容が多く、いきなりこの本から理解を進めることは難しい。あらかじめC++のイメージは掴んでおく必要性あり
【テクニック習得】中級者へのスキルアップに必要なテクニックを習得
ここまでで、「C++ 初心者」に必要とされるスキルは習得することができます。
最後に、 Effective C++で中級者に必要とされる知識を習得します。
C++ 初心者を脱するための、実際のプログラミング・設計のガイドラインが示されております。
単独ではなく、多人数でのチーム開発を前提とする業務では、知っておいて損がない知識が豊富に述べられております。
C++プログラムを理解しやすく、保守しやすく、移植性をあたえ、拡張しやすくするために、55個のガイドライン(アドバイス)をもうけています。
すべての項で、よりよいデザインを考え、よくある問題を避け、自分の期待通りに動く、より効率的なプログラムを書くためのガイドラインが示されています。
ただし、C++の基礎知識無しで、読みすすめることは困難を極めます。
- Good:高速化・保守性改善のためのC++ プログラミングを学び、実践に必要な知識を習得することができる
- Bad:「ロベールのC++」レベルの内容理解を前提としている。基礎知識なしで学ぶと理解不足に陥る可能性
まとめ
おすすめの読み進め方
- 「やさしいC++」 でC++プログラミングのイメージを掴む。完璧に理解する必要はない、イメージが掴めたら次に進む
- 「ロベールのC++」で広く・深く学ぶ。イメージが掴み切れていないと感じたら、「やさしいC++」を参照する。
- 「ロベールのC++」の内容を完全に把握出来たら、「Effective C++」を読み進める。