C++言語 や C# についての本を紹介する。
前の著作が改訂された。このとき翻訳権がアスキーに移ったようだ。 こちらのほうがボリュームもあり、より実践的になっている。
こちらはEffective C++に比べさらに高度なノウハウが満載されている。 私ごときではついていけない。
下の本が出るまでは、C++ の教典とまで言われた。
現在最も信頼できる、設計者自身による解説。しかし、ものすごく分量が多い。 Stroustrup 自身もいっているように、C++ の仕様すべてを理解しようと思ってはいけない。 使えるところだけ、使えばいい。
明解なことばで書かれた、C++ のプログラムをよくする本。かなり前に発売された本で、 今では手に入りにくいと思うが、それだけ基本的なことに絞って丁寧に解説されている。 今流行しているリファクタリングをそこはかとなく感じさせる。
C++ に対する厳格な方針を表明している。日本語版も出ている。
難しい。まだ読み込んでいません。
Oualline と同じ、オライリーの本である。こちらはOualline の本の厚さの半分強しかないが、 扱っている話題は逆に高度である。Oualline の本が、一から C++ を学ぶ人を対象としているのに対し、 こちらは C の知識が前提になっているといえる。
世界でもあまり例がない C++ のインタープリタ−に関する紹介が出ている。 C++ そのものの文法の説明書ではない。付録には C++ の実装例がある。 後藤さんのもくろみは、CINT をいわば各種のプログラムやライブラリーの橋渡しをする グルー(のり付け)言語として利用することであったに違いない。 しかし、このような言語は Tcl や Perl や Ruby に取られてしまうのではないかと心配している。
日本語で世に出た初の STL に関する成書である。まんべんなく STL の構成要素を扱っている。 「ソフトウェア・コンポーネント」という概念を C++ で実現するために、テンプレートの機能を 活かすことを考えた人物がいる。その人物、ステパノフの推薦を受けて、この本は書かれている。 STL を学ぶにあたって、(私も学んでいる最中だが)、念頭に置かなければならないことは、 C で学んできた概念の一般化である。 曰く
コンテナ | データ構造の一般化 |
共通アルゴリズム | アルゴリズムの一般化 |
反復子 | ポインタの一般化 |
関数オブジェクト | 関数の一般化 |
この本はリファレンス的色彩が強い。実務でどのように使うかについては他の参考書がいいだろう。
STL を使ってみるにはいい本だと思う。字が小さいのが難点。
STL の長所ばかりでなく、欠点も指摘しているのが類書とくらべて優れている。
上っ面だけ読んでいるだけだが、なかなか骨のある本である。丁寧に解説しているところは多く、 私のような初心者にも参考になる。しかし、本当は、STL に相当するテンプレートライブラリを 自分で作って利用者に広くすすめる人にとって役に立つ本にちがいない。
STL の本の中で、日本語で読める文献としては、もっとも STL を網羅しているものといえる。 初心者から上級者まで幅広い層を対象にしているようだ。
この邦訳でよくわかわらないのが、ゴシック体と太い明朝体の両方が出ていることだ。 どのように区別しているのだろう。
第1章にC++の概要が置かれ、C言語との橋渡しを担っている。 第2章が本書の主体で、一問一答形式で計77の問答が記載されている。
本書の初版は1994/11/10であり、もちろん今となっては古い。 当時は役に立ったのだが、今は他にもよい本があるのでそちらを見るべきだろう。
技術的な面は古びてしまうのは仕方がないとしても、 当時の水準としても作りが粗雑という印象がある。 たとえば、「少数点」という誤植があったり、 半角英字で表記すべきコマンド類が全角英字で表記されていたりする。 それから、第1章の概要で、次の記述がある。
#define PI 3.1415 は const double pi=3.1415;
と置き換えたほうがよい。
これには笑ってしまった。言っている内容は確かなのだが、例が的外れだ。 まず、誤解のないようにするため、 「は」の前と後にはどちらも改行が必要だろう。 それから近似値の面からは、円周率は 3.1415 ではなく 3.1416 とすべきだ (円周率 PI は 3.1415926535...と続く)。 そして何よりも大事なことは、円周率は C++ では M_PI などで定義されているはずで、 わざわざ定義するに及ばない、ということだ。 たから、#define より const double を使う場合を説明するとき、 私には次のようなものが適切なのだが、万人向きではないのだろうな。
const char const *bach_birth_year = "1685";
(2009-02-07)
まりんきょ学問所> コンピュータの部屋> コンピュータの本> C++, C#, Objective-C