自己流オブジェクト指向&Java参考書 『非』お勧め版

お奨め本リスト*1と対をなす,非お勧め版の入門書・参考書リスト.*2

あくまで『非』お勧めの、駄本、屑本リストである点に注意。しかし皮肉な話だが,初心者を惑わす入門書を避けるためにも要チェックだろう.

主に「何故か有名だけど悪い本」を取り上げる予定.「無名だけど悪い本」はきりがないので,ここではパス.結果として持ってない本が中心になるので詳細について触れるつもりはない.*3

オブジェクト指向本」

実は「オブジェクト指向」というのは,あまり専門的な用語ではない.*4オブジェクト指向プログラミング(OOP),オブジェクト指向設計(OOD),オブジェクト指向分析(OOA)などと,きちんと区別すべきだ.ただ口頭で話す時は「オブジェクト指向プログラミング」と言うのは冗長だしOOPと言っても理解してもらえない.しかたがないので省略して「オブジェクト指向」と言う時も少なくない.

ここで挙げるのは「いわゆるオブジェクト指向」であって,そのほとんどはOODが基本となっていることが多いようだ.


憂鬱なプログラマのためのオブジェクト指向開発講座 (DDJ Selection)

憂鬱なプログラマのためのオブジェクト指向開発講座 (DDJ Selection)

栄えあるワースト1.
いわゆる憂鬱本.有名且つ悪質な本で,日本のIT業界におけるオブジェクト指向プログラミングの普及に著しい悪影響を与えた元凶ではないだろうか.*5 *6

しかも厄介なことに,なぜか素人受けがいい.OOP初心者がこの本を読むと完全に間違った認識を刷り込まれてしまい*7,その後の学習にも支障が出るなど,悪影響が非常に大きい.これは金と時間の無駄使いにしかならない屑本なので,間違って買ってしまった場合はさっさと廃棄処分にするのが得策だ.廃棄処分にしても失った金は戻ってこないが,少なくともそれ以上時間を無駄にしなくてすむ.

  • 実際ぼく自身この本を読んでしまったことによって,随分長い間オブジェクト指向を理解した「つもりになってしまって」いた.
  • 初心者でもサクサク読めるので,何も知らないと簡単に洗脳されてしまう感じで怖いです.実際されたのですが.

http://d.hatena.ne.jp/uskz/20070726/p1

追記

僕は結城さんのデザパタを読んでからやっとまともになり始めた気がする。いまだにオレオレOOPかもしれないけど。

もしもこの本しか読んでなかったらひどいことになってる。そして、往々にしてこういう本を必要としてる人は本を読まないから死亡なんだな。そういう意味で害の大きい本かもしれない。確かにいますよまだワンワンニャーニャーいってる人たちが。

http://d.hatena.ne.jp/iltc/20080428/1209382705
  • この本のまずいところはいっぱいあるのだけれど、大きなのを二つだけ。一つはポリモーフィズムの意味や使いどころを著者自身が理解していない所です。
  • もう一つの大きな問題は OOAD に偏重し OOP をないがしろにした内容です。(中略)OO とは現実の概念をそのままプログラムに落としこむこと としています。これはご存じのとおり間違いです。
  • 細かい枝葉については、猫の性格の悪さを上手く活用してねちっこく責め上げようと、嫌らしくもトンデモ発言をピックアップしつつ読み進めたのですが、キリが無いので断念しました。
  • この本は「こんな風にみんなで誤解してた時代もあったなぁ」と読むのが相応しい本なのでしょう、きっと。
http://d.hatena.ne.jp/minekoa/20080503/1209799681

タイトルは「憂鬱な人も楽しくなれる」という意味なんだろうが,まともなプログラマがコレを読むと日本のIT業界の将来を憂いて憂鬱になるのが現実.この本が何故絶賛されるのかは大きな謎だ.ひょっとしたらFizz-Buzz問題も分からない「自称プログラマ」や「自称プロマネ」や「自称設計者」がコレを読むと,今まで理解できなかったことが理解できたつもりになって,自己満足に浸れるせいかもしれない.


以下順不同.

オブジェクト脳のつくり方―Java・UML・EJBをマスターするための究極の基礎講座

オブジェクト脳のつくり方―Java・UML・EJBをマスターするための究極の基礎講座

「オブ能」にしろ「ゲーム能」にしろ,そんなものは存在しない*8.ある意味で憂鬱本を継ぐ物かも.*9

オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―

オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―

オブジェクト指向でなぜ作るのか」というタイトルに反して,作り方は説明されていない.

・・・・・って、ホントにそうかな。この本、本当はものすごくヤバい本じゃないのかな?

というのも、私もこの本読んで相当混乱させられて。ここはよし、ここもまぁいっかな?と確認しながら歩いているのに、気がつけば明後日の方向にいる。それが実に巧妙で、この本には方向感覚を狂わせる魔法か何かが掛かっているのでしょうか、と思うくらい。なんか階段を上ったつもりなのに気付いたら降りてる感じですよ。気付いたら迷ってます。この本には見た目のフレンドリーさに反した、なにか恐ろしいものの片鱗を感じるのですが、それが何だか説明できない...orz 魔書?。パウ・デイレルの書とか、その類の本?

細かい項目のそれぞれが、一見まっとうなこと書いてあるように見えて実は微妙に本質を外してる、でも間違ってるとバッサリするには躊躇する――そういうのばっかりで。

http://d.hatena.ne.jp/minekoa/20080803


入門 オブジェクト指向設計―変更に強く生産性が高いシステムを

入門 オブジェクト指向設計―変更に強く生産性が高いシステムを

豆蔵セミナーライブオンテキスト(1) わかるオブジェクト指向

豆蔵セミナーライブオンテキスト(1) わかるオブジェクト指向

Java・オブジェクト指向の壁を突破する 抽象化プログラミング入門 (豆蔵セミナーライブオンテキスト 3)

Java・オブジェクト指向の壁を突破する 抽象化プログラミング入門 (豆蔵セミナーライブオンテキスト 3)

独習オブジェクト指向開発 (Teach Yourself OOP)

独習オブジェクト指向開発 (Teach Yourself OOP)

正しく学ぶソフトウエア設計 ─オブジェクト指向分析/設計を根本から理解する (日経BPパソコンベストムック)

正しく学ぶソフトウエア設計 ─オブジェクト指向分析/設計を根本から理解する (日経BPパソコンベストムック)

いちばんやさしい オブジェクト指向の本 (技評SE新書 007)

いちばんやさしい オブジェクト指向の本 (技評SE新書 007)

類書多数.

プログラミング本

プログラミングのセオリー

プログラミングのセオリー

後から追加.「無名だけど悪い本」の一つ.
内容だけなら憂鬱本に匹敵するほどの悪書.こんな本で勉強したら,回りの足を引っぱるトンデモプログラマーの一丁上がり.

ずっと受けたかったソフトウェアエンジニアリングの新人研修

ずっと受けたかったソフトウェアエンジニアリングの新人研修

ずっと受けたかったソフトウェアエンジニアリングの新人研修 開発現場編

ずっと受けたかったソフトウェアエンジニアリングの新人研修 開発現場編

ずっと受けたかったソフトウェア開発管理の集中研修

ずっと受けたかったソフトウェア開発管理の集中研修


ずっと受けたかったソフトウェアエンジニアリングの授業(1)

ずっと受けたかったソフトウェアエンジニアリングの授業(1)

ずっと受けたかったソフトウェアエンジニアリングの授業(2)

ずっと受けたかったソフトウェアエンジニアリングの授業(2)

さらに追加.40年くらいの過去からタイムスリップしてきた著者が,若かりし頃の過ちを書き殴った本のようだ.

ずっと受けたかったソフトウェアエンジニアリングの授業1 増補改訂版

ずっと受けたかったソフトウェアエンジニアリングの授業1 増補改訂版

ずっと受けたかったソフトウェアエンジニアリングの授業2 増補改訂版

ずっと受けたかったソフトウェアエンジニアリングの授業2 増補改訂版

さらにさらに追加.恐ろしいことに,あの屑本になんと改訂版が出るなんて!まだ懲りていないのか?

ずっと受けたかった要求分析の基礎研修

ずっと受けたかった要求分析の基礎研修

ずっと受けたかったソフトウェア設計の授業

ずっと受けたかったソフトウェア設計の授業

ずっと受けたかったAndroid業務アプリ開発の新人研修

ずっと受けたかったAndroid業務アプリ開発の新人研修

Java

Javaでなぜつくるのか 知っておきたいJavaプログラミングの基礎知識

Javaでなぜつくるのか 知っておきたいJavaプログラミングの基礎知識

なぜ、あなたはJavaでオブジェクト指向開発ができないのか―Javaの壁を克服する実践トレーニング

なぜ、あなたはJavaでオブジェクト指向開発ができないのか―Javaの壁を克服する実践トレーニング

この本を読めば,あなたはオブジェクト指向からますます遠ざかること受け合い.

ずばりわかる! Java Javaの良いコード、悪いコード (日経BPパソコンベストムック)

ずばりわかる! Java Javaの良いコード、悪いコード (日経BPパソコンベストムック)

昔パラパラ見て,タイトルに反して良いコードの参考にはならなかったことだけは覚えている.

Javaのオブジェクト指向がゼッタイにわかる本

Javaのオブジェクト指向がゼッタイにわかる本

わかりやすいJava入門編

わかりやすいJava入門編

久しぶりに出た「これはひどい」本.

SPD(Structured Programming Diagram)なるフローチャートの亜種を推奨し,何も知らない初心者を惑わせる.

Java入門ブックガイド(入門編)よりよき入門書と出会うために 」http://codezine.jp/article/detail/5331
ダメ本リストかと思った。

Java入門書

たしかに初心者にはこういう本も必要なのは認める.しかし入門書としては許容範囲なのかもしれないが不適切な表現や間違いも多く,これらの本で得られる知識をベースにする限りはまともなJava開発者になるのは非常に厳しいだろう.この一冊で終わった人は,Java開発者としても終わってる.

例えるならこのような入門書は中学生用の英和辞典のようなものだ.*10中学1年で,"This is a pen."も"I am coffee."も分からないレベルだと,こういう辞書も便利だ.だが中学生用の辞書で勉強する限りは永遠に英検4級レベル*11から抜け出せない.プロを目指すなら,あるいは高校受験に備えるなら一刻も早くそんな辞書を捨てて,まともな辞書に買い換えることが重要だ.

独習Java第3版

独習Java第3版

パラパラと見た限りでは,内容は未だにJDK1.1以前のものを引きずっている.Java5対応は望み薄*12.これは大半の入門書で同じことが言える.*13

やさしいJava 第3版 (やさしいシリーズ)

やさしいJava 第3版 (やさしいシリーズ)

ベストセラーだからと言って良書とは限らない好例.コンパクトで手取り足取り教えてくれるので,入門書としては悪くはないが,これを全部マスターしてもようやく低レベル開発者になるのがやっとだ.

パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)

パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)

これはひどい」というほどでもないが「パーフェクト」は言い過ぎ.せいぜい「Java超入門」くらい.もちろん非お勧め.

Web

その他多数.

番外

ダメコードの例.本そのものは名著なので勘違いしないように.

改訂新版 Cプログラミング診断室

改訂新版 Cプログラミング診断室

C言語のダメプログラム集.こういうコードを書いている初心者は反面教師から学ぶことは多いはずだ.こういうコードを書いている「熟練者」は,さっさと引退した方が良いだろう.

Java Puzzlers 罠、落とし穴、コーナーケース

Java Puzzlers 罠、落とし穴、コーナーケース

言わずとしれたJoshua BlochとNeal Gafterによる,Javaの重箱の隅をつついたパズル本.パズルとしては名著だが,間違ってもこの本の書き方はマネしないように.仕事でこんなコードを書く奴は,開発者としては最低だ.

関連 :-)

備考:憂鬱本について

SFはどこまで実現するか―重力波通信からブラック・ホール工学まで (ブルーバックス)

SFはどこまで実現するか―重力波通信からブラック・ホール工学まで (ブルーバックス)

空想科学読本〈1〉 (空想科学文庫)

空想科学読本〈1〉 (空想科学文庫)

前者は副業がハードSF作家で本職物理学者のロバートLフォワードによる,SF的なオーバーテクノロジー*14を真面目に論じた本.後者は....まあ説明するまでもるまい*15憂鬱本は後者に近い.

アレを「最新テクノロジーの進歩だ」と真面目に信じる人がいるとすれば,憂鬱にもなるだろ.

まんがサイエンス (10) (ノーラコミックスDELUXE)

まんがサイエンス (10) (ノーラコミックスDELUXE)

新装版 HAL―Hyper Academic Laboratory (ガムコミックスプラス)

新装版 HAL―Hyper Academic Laboratory (ガムコミックスプラス)

前者は最新科学の真面目なマンガ解説本(のはず)*16.後者は同じ著者による似非科学のパロディ*17 *18似非科学とは言っても科学知識のない人間には,まともな解説本に見えることだってあるかもしれない.

独習Java第3版」や「やさしいJava 第3版 (やさしいシリーズ)」は前者に,憂鬱本は後者に近い存在です.パロディの方がまだ救いがある.

*1:http://d.hatena.ne.jp/JavaBlack/20070522/p1

*2:ものの性質上,書くのはあんまり気が進まない.コレを見ているだけで気分が悪くなる.しかもアフィリエイトでの売上も期待できないし...orz

*3:屑本というのは,パラパラとめくるだけで屑本だと分かるものだ.

*4:そもそも"Object-Oriented"は形容詞であって名詞ではない.「オブジェクトを重視する」「物本意の」というような意味.いずれにせよ専門用語なので字義通りの解釈にはさほど意味はない.

*5:コレと同じくらい内容が悪い本なら他にもある.コレが問題なのは,一部で絶賛し,回りに広めようとした人がいること.この本の評判を見ていたら,いわゆる『工作員』説を信じたくもなる.

*6:日本語のWebや入門書を探すと,これと同レベルの質の悪い情報が氾濫している.英語圏の方が遙かにマシだと信じたいな.

*7:平たく言って洗脳されてしまう.

*8:「英語能」の方がまだマシだな.これでさえも科学的というには程遠いのだが.

*9:「これが最後の憂鬱本とは思えない.いずれ第二第三の憂鬱本が……」がシャレにならんとは.「愚昧を敵としては神々自身の戦いさえ虚しい」.

*10:

ジュニア・アンカー英和辞典―特装版 CD&英単語カードつき

ジュニア・アンカー英和辞典―特装版 CD&英単語カードつき

初級クラウン英和辞典

初級クラウン英和辞典

*11:あんまり深い意味はない.ようするにプロ以下ってこと.

*12:よくみると原書はしっかり版を重ねているようだ。ひょっとして日本語版は原書の初版相当のままで訳書改訂版ということ?

Sams Teach Yourself Java 6 in 21 Days

Sams Teach Yourself Java 6 in 21 Days

*13:つまりグダグダ言ってないで「プログラミング言語Java (The Java Series)」を買えと.結局はそれが一番の近道なのだ.

*14:軌道エレベーターとかバサードラムジェットとかタイムマシンとか.

*15:後者については「こんなにヘンだぞ!『空想科学読本』」という本まで出ている.いくらパロディでも初歩的な計算違いや論理の破綻はいただけない.少しはラリー=ニーブンを見習って欲しいぞ.

*16:雰囲気的にはこんな感じ。 http://www.koalanet.ne.jp/~anoda/space/mlab11/mlab11.htm http://anoda.web.fc2.com/oldpage/space/mlab11/mlab11.htm

なつのロケット (Jets comics)

なつのロケット (Jets comics)

*17:なにしろ帯に「このマンガには、一部真実が含まれている場合があります」と書いてあるほど。大半の大嘘の中に小さな嘘と,ほんの僅かな真実が含まれている.

*18:HALと言っても2001年とは全く関係ない....連載が2000-2001年ということを除けば.