質問: Javaプログラミングを教えていて、初学者がなかなか理解できないことがあることに気づきました。初めてなので、理解にいたるための小さな積み重ね(試行/思考時間)が圧倒的に少ないことが理由のひとつだと考えています。 ところで、我々は子供のときに算数を習ったわけで、大人になって計算のできない人はほぼいないでしょう。小学校のときに受けた算数の授業を考えてみると、ものすごく初歩的なところから始めていることに気づかされます。 そこで、Javaドリルのようなものができないだろうかと思いました。公文式の算数ドリルのようなものが頭の中にあります。ドリルを解くうちに少しずつプログラミングの理解が進むような問題構成、単純な問題から少しずつ難しくなっていくようなドリルです。対象は成人でなく子供でもよい。 すこし曖昧な問いですが、意見を募集します。悲観論、楽観論、何でもかまいません。 ちなみに、以下の箇所で躓いています。 ・変数の宣言、配列の理解、添え字の扱い ・プリミティヴ型、参照型の違い ・代入はコピーであること ・演算は、断らなければ整数演算になること ・繰り返し構文 ・ブロック構造(変数のスコープ、文が書ける箇所、書けない箇所) ・メソッド呼び出し(実引数、仮引数、戻り値) --- 回答者の皆様、ありがとうございました。 ・ドリルは参考にします。 理解にいたるには、プログラミングの量が必要だと思いますが、それだけでは不十分。言語の理解が必要という指摘がありました。 ・ドリルでは学びきれない内容。 アルゴリズムや対象言語の構造、API、対象業務などの理解が必要だろうと思いますが、これからの課題とします。
回答: 言語仕様のマスターならドリルでもいいですが、「言語仕様を理解した人」と「プログラミングができる人」は別物です。 言語仕様はルール、プログラミングは技術です。サッカーのルールを理解したからといってサッカーができるわけではありません。 大抵の入門書は、このルールとそこから発展した「Aをしたい場合はBすればいい」ということしか書かれていません。 実践では「Cの状況でAしたい場合はBすればいい」のはずで、Cはとても複雑な条件なのです。 この違いが入門書を読んだだけのプログラマーを挫折させるには十分な理由になります。