『C/C++プログラミングの「迷信」と「誤解」』2011/03/27最近パソコン本(特に邦書)がつまらないもんで,買って読むどころか立ち読みしようとすら思わないんですけれど,本書は立ち読みで読みました。立ち読みで済ませたものを紹介するのもアレなんですけれど,ま,一通り読んだので......。「言語仕様」を主な論拠にして,巷で主張されている誤解を正そうと試みた本です。界隈ではいまだに「コンストラクタで例外を投げてはいけない」みたいな迷信があったりしります。こゆあれこれをトピック形式で扱っている。紹介(出版社の説明)では「未経験者にも最適」と書いてあるけれど,迷信について扱っている本なので,ある程度開発の現場に身を置いた人でないとピンとこないだろうと思います。プログラミングしている向きにとって,あやふやな知識や定かでない情報を一元化する意味では,まとまっていて便利に使えると思います。プログラマは自分で本書にあるような作業をしているんですね。悪く言えば本書はそうしたバイブル本の焼き直しであるともいえるし,初心者からそうした機会を奪う本だとも言えるんじゃないだろうか。少なくとも,初心者さんが本書を読むときは,そゆコト(ショートカットして楽してるんだぞとゆこと)も踏まえている必要があると(オジサン的には)思います。ひとつ,本書で扱っているトピックの中には,ややマニアックな言語仕様に関する話もあって,実際の開発場面でそれほど重要だろうか,と思えるものもあります。仮想継承を含んだ多重継承の構築順がとある会社の入社試験問題に出た,なんて書いてあったけれども,こゆ問題は知ってるか知ってないかの話で考えさせる要素がないし,あまり一般的ではない文法事項を出題している点でも良い問題とは言えません(単に落とすための問題)。本書を必要としているような向きは,こゆところで立ち止まる前にやることはいくらでもあるとも思う。最後に,トピックにおける最終的な主張について,筆者の立ち位置を少し踏まえておく必要があるんじゃないかとも思います。個人的に,本書の筆者さんは,やや規格書至上主義に偏っているところがある気がしている(本書に限った話かもしれないが)。規格書と処理系の実装が異なる場合は,「処理系が悪い(規格書と異なる)から処理系を変えろ」みたいなことを主張する。それはそれで正しいんだけれども,これは今だからこそ言える正しい主張だということも忘れちゃいけません。新規開発ならまだしも,世の中のプログラムのほとんどは,派生開発や保守開発の類です。老舗のソフトハウスが作っている売れ筋ソフトのソースコードほど,「現在の時点から見て」普通に汚かったりする。処理系だから),それでも使っているのには理由があります。同僚の某人曰く,「処理系のバグも踏まえてプログラミングできるのが一流」だそうだけれども,(一流かはともかく)大抵のソフトウェア開発が,限定された開発環境の制約下で行われていることを忘れちゃいけないとは思うわけです。そこには規格書とは異なる(時に真逆の)プログラミング作法がある。言語仕様を見直すのには,いい頭の体操になるんじゃないかと思います。本書の類書は過去から現在までたくさんあるけれども,本書のように規格書を引用して論拠を明確にしているものを読んだことはありませんでした。この点については,非常に好感が持てます。一読して損はないかと。