われがわログ

最適化アルゴリズムとかプログラミングについて書きたい

オススメのC++入門書【2020年8月版】

必要に迫られてC++に入門したので使用したテキストをメモしておく。 結論としては、「独習C++新版」か「江添亮のC++入門」がよい。

C++書籍の一覧は以下のサイトが詳しい。

cppmap.github.io

プログラミング経験者を対象とした、C++17までカバーしている入門書は2020年8月現在以下の2つ。

独習C++ 新版

独習C++ 新版

江添亮のC++入門 (アスキードワンゴ)

江添亮のC++入門 (アスキードワンゴ)

江添さんの方はエラッタがなく、かつ、近所の本屋に在庫もなかったので、独習C++を読んだ。 amazonレビューによれば誤植が多いとのことなので、エラッタを随時参照したほうがよい。 私はC, Golang, Pythonは使えるのでほとんどの項目はすんなり読めたが、テンプレートや右辺値参照のところは難しく感じた。 正直、テンプレートを使いこなせる日が来る気がしない。 C++20が普及してconceptが使われるようになれば若干は楽になるのだろうか。

実際にC++でソフトを書いてみた感想としては、仕様が新しくなっていくにつれ、ユーザーフレンドリーになっているように感じた。 C++というと玄人の使う黒魔術言語的なイメージだったのでこれは意外だった。 はやくcoutをぶん投げて std::formatを使いたいのだが、実装はまだだろうか。あと std::rangesも便利そうではある。 また、Rustより簡単にかけて(もちろん安全性は低い)、ハイパフォーマンスを出せるので書いていて楽しい。 辛いところは、仕様が3年毎にしか更新されないことだろうか。Rustが毎月、Golangが半年に一度のペースで更新されていることを考えると非常に遅く感じる(その分、一回の更新量は大きいが)。 他の大多数の言語と違って、仕様決定者がコンパイラ作成者でないということが影響しているのだろうか。 コンパイラが複数あるという点に関して、MSVCではコンパイルが通るのに、GCCやClangではエラーが出るみたいなことがあるのも辛かった。

なお、江添亮のC++入門 については、ネットで公開されているので自分に合うかどうか読んでみるとよい。 ezoeryou.github.io

以下のページの方が見やすいが、ソースが最新版に同期されているかどうかはよくわからない。

cpp.rainy.me