そろそろIDEよりコマンドラインのほうが理解が深まるという有害な妄想は捨ててはどうか?

Java入門ブックガイド(入門編)よりよき入門書と出会うために」を読んで。
第一印象として、よりよきJava入門ブックガイドに出会う必要があるなということ。

コマンドラインでは慣れ親しめない

サブタイトルに「慣れ親しむことが上達の秘訣」とあるけども、コマンドラインで慣れ親しむのは難しいと思います。
「慣れ親しむことが上達の秘訣」が正しいのであれば、IDEで慣れ親しんだほうが上達するのではないでしょうか?
現実問題として、書籍を買って勉強する人は強制されて勉強するわけではないです。自分の時間をやりくりして入門書を読んでいます。
そして、まだプログラムの面白さを知りません。
コマンドラインコンパイルエラーが出たとき、じっくりとそのエラーを読み解くのではなく、そこでくじけてやめる可能性が高いと思われます。
それよりは、IDEでエラーを入力段階で修正しつつ進むほうがいいと思います。

javac/javaコマンドはJava技術の本質ではない

このような記述があります。

煩わしい作業の中にこそ、その技術の本質があったりするからです。

けど、少なくともコマンドラインでのコンパイル作業にJavaの本質はありません。
ぼくは長いことJavaのプログラム作ってますが、記事用の動作確認以外では、ここ数年はjavacコマンドでコンパイルしてません。実行時にはコンパイルされることもあまり意識してません。
意識しなくてもずっと仕事をやっていけるような部分に本質はないと思われます。
それより、オブジェクト指向のほうがJavaの本質に近いと思われます。オブジェクト指向を腫れ物のように扱って2分冊にするということのほうが、本質をはずしている気がします。

間違い探しはプログラムを組む訓練にならない

入門書のサンプル入力では、失敗した数だけ時間が多くかかるだけで、ほとんど学べることは増えません。

例えば、何かエラーが出たとします。統合開発環境を使わないのであれば、原因と思われるものを列挙し、丹念に個々の原因と思われるものを調べるうちに、失敗していなければ学べないことを学べるのです。

とありますが、ほとんどのミスが大文字小文字のミス、スペルミス、中括弧の抜けです。全角スペースが入ってしまっているというミスも多いです。
このようなエラーなら、おそらく、IDEの入力時のエラー訂正で十分です。
また、失敗していなければ学べないことを学べるようなエラーの場合は、IDEでも学べます。むしろそういうところに絞って悩めるので、有効だと思います。

コンパイルエラーをプログラムのエラーだと誤解する

入門者にとってはエンドレスと思われるこの作業こそ、エラーの少ないプログラムを作るための大変大切な訓練なのです。

とありますが、プログラムで減らすべきエラーはコンパイルエラーではなく実行時のロジカルなエラーです。
コマンドラインで勉強している場合、コンパイルエラーをとるのにあまりにも時間がかかるため、そこがゴールだと勘違いする人を多くみかけました。
けれども、実際はコンパイルエラーがなくなってからが勝負です。
コンパイルエラーを取るのに時間をかけるのではなく、ロジカルなエラーを取るのに時間をかけるべきです。

IDEのほうが調査範囲を広げてくれる

自分の狭い学習範囲を飛び越え調査することを怠るようになります。

とありますが、コマンドラインで学習しているからといって学習範囲を飛び越えて調査するとは限りません。むしろ、その可能性は低いです。
IDEのほうが、補完候補に「学習範囲を飛び越えた」内容を出してくれるし、修正候補にも「学習範囲を飛び越えた」内容を出してくれます。
Javaやライブラリのバージョンがあがったときに、補完候補から新しいAPIの追加を知ったという経験がある人も多いんじゃないでしょうか。
こちらのほうが、学習範囲を飛び越えた調査に結びつきやすいと思います。

大切な概念を学ぶ時間がとれない

たとえば、ぼくはjavacコマンドよりもデバッガやJUnitのほうが大切だと考えています。
「創るJava」ではコマンドラインの解説がないのは、コマンドラインの解説に20ページも取るのであれば、デバッガやJUnit、バージョン管理の説明をしたほうがいいという判断です。
ロジカルなエラーを排除するには、デバッガやJUnitが不可欠です。

その代わりに失う代償を覚えておいてください。

という場合、コマンドラインでの勉強で失うものもちゃんと考えるべきだと思います。コマンドラインでの学習は、もっとも貴重な「時間」というリソースが失われてしまいます。

実際はコマンドラインでの入門のほうが理解度が低い

いろいろあげましたが、コマンドライン信奉者の人たちは、もっとも大切な事実をおそらく知らないのです。
それは、コマンドラインでの入門のほうが理解度が低いということです。
コマンドラインでの学習が時間がかかるものの理解が深まるということが事実であれば、ここまで強く批判はしません。実際には、時間がかかり理解も深まらないです。
プログラムを組んでることすら気づかないのです。
学校でのプログラムの授業の感想として「何をやっていたのかすら理解できない」というものを多く聞きます。プログラムが難しいというのではなく、その授業がなんだったのかすらわからないということです。
理解を深める以前の問題です。
コマンドラインのほうが理解が深まるというのは、もともと理解がある人だけがコマンドラインで学習できたというだけの話にすぎません。
コマンドラインで学習することができた数少ない人を見ての誤解です。
はっきり言って、この記事にあるような、コマンドラインで理解が深めれるというのは、実際の入門者を見たことがない人の妄想としか言いようがありません。
それを信じてしまってコマンドラインで入門してしまうと、多くの人はくじけてしまいます。
それでくじけるようならプログラムなどやらなければいい、という考えならかまわないですが、それは入門書ガイドでやることではありません。

コマンドライン使ってもコマンドラインの使い方しか覚えれない

よいプログラムを組めるようになるためには、アルゴリズムなどの勉強が必要です。
コマンドラインをいくら使ったところで、その勉強の代替にはなりません。
Javaの勉強はIDE使ってとっととすませて、アルゴリズムなどの勉強したほうがよいと思います。

プログラム言語を深く知らせたいなら(2010/09/01 3:05追記)

プログラム言語について深く教えたいなら、javacコマンドでなやませるより、JavaCCでも使ってスクリプト言語作らせればいいと思う

プログラムが組める人にしたいなら(2010/09/01 3:05追記)

プログラムがちゃんと組める人にしたいなら、javacコマンドでなやませるより、計算理論の基礎とかアルゴリズムデザイン読ませてTopCoderやらせまくったほうがいいと思います。