質問: C++の勉強をしていて、とりあえずオライリーの『C++ プログラミング入門』を読みました。次に何を読んだらよいですか?おすすめを教えてください。『C++ プログラミング入門』では省略されているか、囲み記事でさらっと触れてあるだけのトピックを学ぶことのできる本が良いです。
回答: > 「別な形」として何が良いか についてですが、自分の場合は、 C++: language&libraries でした。 現在のメールの量は減ってますが、未だに興味深い議論がときどき見れます。 過去ログを読むだけでも十分興味深く、なるほどなと思えると思いますよ。 C++の難しさは、プログラミング言語の難しさもあるのですが、それに加えて、設計レベルのよしあしも重要になってくるところだと思います。 語弊はありますが、いわゆる簡単といわれる、Perl、PHP、Rubyなどは、大きなものを作るうえでも大部分の場合は、小規模であれば単純な処理の羅列として記述し、大きなアプリケーション(といっても大部分はWebアプリですが。)の場合は既存の設計されたフレームワーク上で構築する。のが基本だと思います。 C++の場合はそれを必要とされる状況を踏まえると、下位のレベルから上位のレベルまで自作ということが珍しくないと思います。その分、その規模のものをどう効率的に構築するかということも踏まえて考えなければいけなく、また、同時にパフォーマンスが要求される場合も多いわけです。 それを扱うために、オブジェクト指向、ジェネリックプログラミングと言った技法を取り入れてあるのですが、それらを本当に使いこなすには、その前提となる理論的な部分をある程度押さえていないと、何が何だか分からなくなってしまいます。 そういった意味では、次の書籍も押さえておくと、よいかもです。 「オブジェクト指向における再利用のためのデザインパターン」 なぜ、オブジェクト指向が必要なのという部分はデザインパターンを理解するのが一番効率的だと思っております。この本は他のデザインパターンの本より難解なイメージを与えていますが、例文がC++のものが多いので、よいかと。 デザインパターンは、理論的なパターンと、それを言語レベルで実現する実装手法とがあって成立するので、C++の表現力でどう扱うかといういい例になると思います。 「Modern C++ Design」 これは、オススメというか、テンプレートってこんなにすごいんだと目から鱗が落ちる本です。 ただ、難解です。入門書ではテンプレートってこんな風に色々な型を扱えますねといったトイプログラムの域を超えて、こんな使い方ができるのかと気づかされます。 ただ、背景にはデザインパターンがふんだんにありますので、それらを踏まえてから読むことをオススメします。 書籍をあげておいてなんですが、そいうった言語の特性から、「自分が持っている問題」と「教科書に載っている似た問題」が必ずしも一致しません。よく言えば、実践的といえるのかもしれませんが。 学ぶ上では、「自分の問題」を解くというプロセスが何よりも身になります。 もし、身近にC++が好きな方がいれば、自分の問題を話して、どうするのがよいか議論を重ねたり、そのような方がいなければ、さきほどあげたMLなどを利用して、識者の方のご意見を伺ったりして知見を広めていくとよいのではないかと思います。 何かの参考になれば。