経緯を知っている人以外には無益なエントリなので、そういう人はこのエントリは無視しちゃってください。

あの本の意図を説明してくれれば話は早いと思うんだがなぁ・・・

で、「本書の意図」というのが「初心者向けなんだからきっちりかっちり正確な表現じゃ伝わりにくい。だから厳密に言えば間違ってる部分もあるけどわかりやすさ優先しました」的なものだとしましょう。これはアリです。いいことだと思います。

で、間違いであると指摘した部分は以下の通り。

完全に間違っているもの マクロのバグ C# の struct のパフォーマンスについての誤解 独自の用語 習得が容易なはずなのに初心者向きではないという矛盾 メッセージという用語の誤用 .NET の Substring が 1 オリジンという誤解 データ型の目的 浮動小数点数 言語別の null の違い 特殊な値 「より良い」と著者が感じる「これはひどい」コード 式と文の混同 優先順位を変える括弧が演算子かどうか SQL 関連 最適化の考え方 デバッグという言葉について 例外オブジェクトが消滅するかどうか 構文 警告の扱い方

間違っているとは言い切れないもの 著者の考え 間違った構造化へのアプローチ 入れ子関数と匿名関数 (無名関数) クラスの設計の理論 完全なオブジェクト指向言語 名前付けに関して コメントアウト より精度の高い計算が行いたい場合 「スマートな」コード



で、ですね。「本書の意図」を汲み取ったとして、この中で取り下げてもいいかな、と思っているのは、

習得が容易なはずなのに初心者向きではないという矛盾

.NET の Substring が 1 オリジンという誤解

浮動小数点数

の 3 つくらいなんですよねー。

最初のは、「習得」の範囲がどこまで考えているのかが著者と自分で全然違う、ということでしょう。

2 つめのは、正誤情報で誤りでした、と認めているので。それにしたってひどい間違いだと思いますけどね。本当に勘違いしていたとしか思えない。

3 つめのは、もっといい書き方はあるだろうけど確かに初心者に向けてはこの程度の説明はありだろう、と考え直しました。

だけど、ですよ。「本書の意図」を汲み取ったとしても、バグはバグだし、初心者は struct なんて自分で作るべきではないし、独自の用語は避けるべきだし、用語の誤用はもってのほかだし、ひどいコードはひどいし、小手先の最適化は初心者にとって悪だし、デバッグしないのが一番良いデバッグだとか小学校からやり直せレベルだし、初心者ほど警告は無視すべきじゃないし、コードはひどいし、なにがスマートなコードなのかわからないわけですよ。

指摘した部分が間違いだ、というのなら、どこがどう間違っているのかぜひとも教えてほしいものです。

現在Google で「プログラミングの常識」でぐぐると一番上に来るみたいなので、これに対して著者自ら反論することは意味があると思います。

批判というか、意見は付きましたよ。コメント欄で批判というか、突っ込みがいくつか入っています。

というかですね。「初心者プログラマ向けに書かれている本できわめて無責任な記述が多く、そのような本の著者が批判を受け止めずに開き直る」のは残念でなりませんね。

日向さんこそ、想定読者レベルを無視した記述が多く見受けられるのは気のせいでしょうか・・・？

初心者はそのような記述の真偽が判断できないのです。いや、判断しようともせず、本に書いてあることを鵜呑みにするほうが多いでしょう。

いや、だから「誤解を受けることを承知の上で初心者向けにあえてやさしく解説する」のはいいのです。

でも、「あなたの本はそうじゃない」と言っているのです。

たとえば、最適化の手法として、

関数のマクロによる置換

別モジュールにして実行時チェックをはずしてコンパイル

SSE や SSE2 の使用

整数に変換して計算後、再変換

並列処理

アラインメントの調整

を挙げていますが、初心者に対してこれらの説明はやさしいですか？

自分の知識を初心者に自慢したいだけのように思います。

「ユーザーのマシンは遅い(P.185)」のに、「現在のコンピュータには、多くの場合、マルチコアの CPU が搭載されています(P.191)」というのも、単に並列処理と言いたかっただけとしか思えません。

読者不在のまま、自己満足に浸って書いたような印象を受けるのですが、違いますか？

批判する人間にもし本当に能力があるのであれば、匿名で無責任な批判をする前に、 C++、Java、アセンブリ言語、JavaScriptのようなスクリプト言語、XMLやXAMLのような記述言語を 含めて、5種類上の言語で実際に動作するプログラムを作成してそのソースコードを広く一般に公開し、 他人の批判を受けてみてから、 自分で完璧な本を書いて出版社に持ち込んで出版してみてください。 http://www5.ocn.ne.jp/~seablue/res/ckp.html

本を書かなければ広く一般に公開したことにならないんでしょうか。

bleis-tift の名前で、数は少ないですけど Web に公開してますよ。どう書く？org とか*1、このブログとか、Twitter とか。

それに対して日向さんのコードは本のサンプルしか見たことがありません。しかも、そのすべてがひどいものばかり。

本を書くことだけが創造というわけではないでしょう。

無責任という言葉をどういう意味で使っているのかは知りませんけど、的外れだとは思ってませんし、これからもその意見は変わらないでしょう。

読者を見下すような人に何を言っても無駄かもしれませんけど、自分がしてきたことが無意味だと思うことはないんじゃないでしょうかね？

とりあえず、Google 検索ではトップになるみたいですし。

さて、なんかいい感じに見下されたところで、こちらも日向さんのことを見下しておきましょうかね？

散々引用してきたこのページ、まともな技術者の書く HTML(?) じゃないですね。

「これはひどい」と言わずにはいられないな！