ロベール本

C++を使う必要があり基礎から勉強しなおしたいと思って、『ロベールのC++入門講座』という本を買った。かなり内容がまとまっており、久しぶりのヒットだった。C++のこういう本を待ち望んでいた。C++は文法が細かいので、今まで網羅的にまとまった本がなかった。


最近、C++を使う機会が出てきてC++の難しい理由が分かってきた。結局、ある処理をやろうとしたときに、複数のやり方がある。例えば、文字列は、char*、std::string、CString、wchar_t、std::wstringなど複数あり、これに伴う関数も複数ある。標準だけでなくマイクロソフトのライブラリがあり、boostのようなライブラリもある。C++/CLIだとSystem::Stringでまた違うが、これは言語が違うので関係ない。


効率を重視したプログラムの場合、文字列を危険だが生のchar*で扱えば良いのか、std::stringで扱った方が良いのか迷う。データ構造にしても何百万の要素をもつ場合、STLを使うとメモリをかなり使ってしまったり、足りなくなってしまう。だからと言って、C++で自前でそういった基本的なクラスを自作するのも大変。ある意味Javaの良いところは、Apache Commonsなどのライブラリもあるが、基本的には標準のを使用すれば良く選択肢が少ない。しかし悪いところは、Rubyのような大クラス主義ではなく、クラスがかなり細かく分かれているので、適切なクラスを使用する際に初心者は迷う。とにかく、選択肢が多いというのは非常に難易度を高く感じてしまう。