初心者がプログラムを独学で覚えるのは難しいと思います。失敗すると間違った方法で勉強を進めてしまい、スキルアップのベクトルを誤ってしまう危険がかなり高いと感じています。プログラミングを覚え始める最初の1年目で方向を誤るとその後の進歩に大きなマイナスになります。
独学で本を読んで勉強した経験のある初心者以上,中級者未満の人に対して、現在プログラミングスクールでJAVAを教えています。やはり勉強の方法を間違えてしまっていて、言語の文法の表面をなぞった程度の知識しかない人です。『まず本から得た知識はいったん全て忘れるように』と言うのが最初の講義でした。私の教え方は本に書いてある事とは違う方向からの説明なので変な先入観はかえって邪魔です。特にオブジェクト指向の考え方については、変な予備知識があるほど間違って理解されてしまいがちです。
実は現役のプロのプログラマの中でもオブジェクト指向を真に理解し実践できる人はほんのわずかです。その理由を考えてみると、オブジェクト指向以前の古いプログラミングスタイルの知識が邪魔をして、技術のパラダイムシフトに着いて行くのを難しくしているのではないかと思います。
このような古い考え方から抜け出せない技術者が寄ってたかって設計したシステムが旧態依然のひどいものである例を、私は今までいくつも見てきました。その話もいずれ書きたいと思います。
話を戻して、この受講生が独学に使ったという本を買ってきて参考までに読んでみました。割と有名な本らしく、ネット上などでも良い評判が多く見られました。まぁ、あまり期待はしていませんでしたが、これはひどい...
世の中のプログラミング初心者は本当にこの本を読んで『やさしい』と感じるんでしょうか。この本を読んで本当に実用的なプログラムを書ける人がいるとしたら、その人は最初からどんな本で勉強したって出来るくらい頭のいい一部の人間に違いないです。
だって、乗り物クラスを継承して車や飛行機を作ろうだの、動物クラスから犬クラスを継承して「吼える」メソッドを呼んだら画面に「ワン」と表示されますだの、いったい何の話をしてるのやら。『それがいったい何の役に立つんだ』という部分の説明が全くないんです。
上記の『オブジェクト指向を真に理解できていないプロ』の人達にも共通する点はここです。実際の業務システムのどの場面でどのように役に立つかの説明がないまま、単に文法の仕様書を『やさしいつもり』に書き直してるだけです。東大を卒業できるほど基本的に頭がいい人ならともかく、万人が理解できる説明ではないんじゃないでしょうか。
決して特定の固有名詞を出して筆者の方たちを悪く言うつもりはありませんが、私の個人的な見解では『○○言語入門』とか『やさしい○○言語』のようなタイトルの本は決して『優しく』ありませんでした。私ならそれをもっと『易しく』教える自信があります。採算を考えずに私がプログラミングスクールを続けている理由はその一点です。