今期、私はJavaプログラミングの授業を履修している。「プログラミングできる人ってかっこいいなー」という単純な憧れから始めたわけだが、毎回毎回自分の書いたプログラムに翻弄されている。書いたものを実行しようと試みれば必ず毎度、「あぁ、なんでそこで止まるの!?」などと修正を余儀なくされ、1回で動いてくれることはまずない。何度かの修正でちゃんと動いてくれれば万々歳、もう打つ手がないと思ったら先生にask、とこんな調子である…。
とはいえ、プログラミングの基本中の基本のことをやっているので、私がひーひーしているプログラミング課題もそんな大掛かりなものではない(はず)。この授業は、プログラミングを全くやったことのない人でも大丈夫という内容で構成されている。コマンドプロンプトの使い方から始まり、Java言語のしくみについて少し触れ、今はコンパイル作業なしでプログラムを実行できるeclipseで書いている。プログラミングは、四則演算、条件分岐(if/switch)、繰り返し(for/while)、配列までたどり着いた。
たくさんのミスプログラミングのかいあって、私が書いたプログラムは何がまずいのかがよくよく見えてきた。プログラミングの肝がおざなりになっていることがまずいのだ。それぞれのコードが表現するものをなんとなくしか分かっていないのに加え、目的のプログラム目指してコード同士が適切につながっていないという…。おおざっぱというか、なんとなくの表現というか、緻密さとはかけ離れたものなのである。こんなところで自分の思考の特徴が露呈するとは思わなかった。それぞれのコードが表現するものは、ルールとして決まっていることだから覚えてしまえばよい。ということで覚え始め、けっこう覚えたつもりになっていたが、私の覚え方はざっくりしすぎていた。だから、あるコードが足りなくても気づかず、プログラムもちゃんと動いてくれない。なんと律儀なことか…。続いて、コード同士をうまくつなげることである。完成したプログラムを、コードのルールをもとに分解して、それらのつながりを考えていかなければならない。上に書いたとおり、そもそも最初のルールを把握する段階で失敗が起きているので、そこをパスしない限り動くことはない。まずはそこからである。ひとつひとつ丁寧に覚えたうえで練習を重ねればどうにかなるだろう。より簡潔なつながり、美しいつながりを求めるのはそのあとだろう。
自分が作ったシナリオを正直に正確に実行してくれるプログラミングは、自己反省にはもってこいである。書いてあることは実行し、書いていないことは実行しない、というのが徹底しているから、結局自分の間違いを認めざるを得ない。人間社会ではうやむやにしているちょっとした揺れやズレをプログラムは受け入れてくれない。どこまでも緻密に、論理的に思考することを求めてくる。1つの課題を完成させるまで、時間もかかるし頭もだいぶ使っている。でもその分、自分で書いたプログラムがちゃんと動いてくれるとすごく嬉しいのは確かだ。そしてまたその嬉しさを感じるために次の課題に取り組むのである。