デジタルハリウッド大学 学長 杉山知之
プログラミング言語の面白いところは、ある問題を解決し、まったく同じ結果が得られていたとしても、その過程であるプログラムは、いかようにでも書けるというところだ。条件、繰り返し、ジャンプ、配列などなど、役割をさまざまに持つプログラムの要素を、どのような順番で組み合わせて問題解決に至るのかの過程こそが、プログラミングである。だが、そこに模範解答は無くてよいと、ぼくは思っている。
昔のコンピュータやパソコンを知っている人は、プログラムをいかに短く書くかに、多大な知力を使っていたのを思い出すかもしれない。同じ問題を解決するなら、美しい解法を見つけて、短い行数でプログラムを書ければ、計算時間が短くなるからだ。
ところが、現代のパソコンやスマートフォンに搭載されているコンピュータの計算能力は、恐ろしく高い。20年間で10万倍ぐらい性能が上がるのが、コンピュータの世界。今や我々は、スーパーコンピュータに囲まれて生きているといってもよい。この状況の中では、コードを極限まで論理的に煮詰め、短くすることには意味が無い。
算数や数学のテストで、答えだけでなく、計算過程を残しておくようにと指示する教師は多いはずだ。生徒がどのような方向で問題にアプローチして答えを導き出したかを、手に取るように理解できるし、当然ながら、どこで間違いが起きたかも理解できるからだ。
これとまったく同じことがプログラミングでもいえる。生徒のプログラミングを読み解くのは意外と大変だ。大人が普通では思いつかないようなアプローチで、プログラムしている場合がよくあるからだ。
プログラミングの授業に慣れ、教師が生徒のプログラムを読み解く能力が上がっていくと、生徒の頭の中を直接のぞいているような気になるはずだ。これは教師としては、ワクワクするような体験でもある。
しかし、さまざまなコードを書けてしまうプログラミングの成績評価では、どう評価すべきか、いろいろ悩みがでるだろう。
プログラムのコードには、その人の性格や人格まで現れてしまう。プログラムのコーディングを極めていくと、そこにはテクノロジーというより、アートだという世界まで現れてくる。
スーパープログラマーは、アーティストともいえるのだ。子供たちにも、プログラムがアートになるのを知ってもらいたい。