SSブログ

Javaをプログラム入門に用いるのは [ゼミ・教育]

今年のプログラミング入門の演習は、スクリプト言語のはずが、Javaを使って教えてきた。というのも、結城浩著『Javaプログラミング・レッスン』上下が、プログラミングの基本的な概念を実に丁寧に、かつ詳しく説明していたので、これを使えば、僕の急いだ説明に着いて来れなかったとしても、家で予習・復習ができると考えたからだ。

 昨年度までは、Pythonをメイン言語にして、テキストは毎回僕が前の晩に書いたものをコピーして渡していた。その記録は僕のホームページの配付資料のページに全て残してある。それなりに工夫はするものの、前の晩に急いで書いているので、読むだけで分かるようにはなっていない。あくまで、授業で説明をするための資料という位置付けになっている。そのため学生は予習ができない(なにせ、前の晩に書いて、アップは当日だから。)ばかりか、復習しようにも、読んだだけでは分からないし、授業中に訂正したりするところもあって、不便をかけていた。

 その反省に立って、既存の本をテキストに選んだのだった。別にJavaである必要はなかった。結城氏には昔『Perlプログラミング・レッスン』という本もあって、これが手に入れば、その方がよかったのだが、今はJava本しか手に入らないし、これはAmazonの書評などでも好評であり、書店でも平積みで入手しやすい、など好条件が重なったために選んだのだった。

 しかし、この選択は、思ったほどの効果を発揮しなかった。予想よりも進行は遅れ、昨年度よりも充実していないような気がする。なぜだろう。

 問題は結城氏の本にあるというよりも、Javaという言語にあるように思われる。初心者がプログラミングを学ぶには、あまりにも煩雑な文法だからだ。これだったら、まだC言語の方がシンプルでいい。

 たとえば、単純に画面に表示するためにSystem.out.println()という関数を使わなければならない。ここで、Systemとoutとが何かを理解しなければ、単に文字列表示のための長い単語を覚えなければならない、ということになる。

 同様に、キーボードからの読み込みも、

BufferedReader reader = new BufferdReader(new InputStreamReader(System.in));

などと宣言しなければならない。これがどれだけJavaのクラス構造に依拠しているかは、明白だ。そしてそれを理解するために、クラスやクラス同士の関係を理解していなければならない。そうでなければ、これも意味を分からず丸暗記せざるを得ない。

 これが、プログラミングの本質にどの程度関わっているのだろうか。もちろん、Javaは初心者のためのものでなく、プロのプログラマが巨大なソフトを効率的に作成するためのものだ。そういうものを作るときに威力を発揮するし、そういう巨大なプログラムの前では、これらは煩雑であるよりも、むしろ統一的で安全な書法だと言えるのかもしれない。しかし、それは初心者のためものではない。

 一体プログラミングの本質とは何だろうか。オブジェクト指向もプログラムの本質に関する、ある重要な提言をしている、という意見があるかもしれない。確かにそうだろう。だから問題は、一般的なプログラムの本質を問うてはならないのである。初心者がプログラムの本質についての理解を得るために必要なものは何か、と問わなければならない。その答えは、Java言語に適するものではないだろう。

 最近、取り上げてきたPythonというのは、そういう意味で最良の選択だったと思うし、それをモデルにさらに簡略化をし、必要な機能に特化した日本語スクリプト言語wythonも、初心者がプログラミングの本質を理解するために適していると思う(そもそも、wythonはそのために開発したのだから、初心者に適していなかったら、まずいのだ。)。

 夏休みには、毎週課題を出して、その解答をメールで送ってもらうことにしているが、そこでは、Pythonないしはwythonを使用して、余計な概念に惑わされず、プログラミングの本質を身に付けてもらえるように、ふたたび、自前のテキストを書こうと思う。

 それと、今年のゼミの四年生の中に、そういう初心者向けのプログラミングの本質は何か、というテーマを取り上げている学生がいる。その学生の研究成果が待ち遠しい。本当はwythonはその学生の卒論を承けて作った方がよかったくらいだ。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。