【連載】プログラミング学習からつくる未来への教育 第4回 バグが創造性を刺激する

デジタルハリウッド大学 学長 杉山知之

プログラミングとは、子供たちが頭の中で思い描くことを、それになるべく論理的な形を与えて外に出して眺めてみることだともいえる。逆にいえば、頭で思い描く以上のものは作れないはずなのだが、実はそうではない。

プログラミングで思い知らされるのは、間違いがないようにプログラムをしたつもりでも、必ずしも思い描いたように動かないということだ。これをバグという。

このバグを取り除き、当初、思い描いていた通りに動くまで、プログラムを改修し続けるのが、プログラミングの基本作業となる。このような作業がコーディングだ。

しかし、バグがバグじゃなくなることがあるのが、生徒たちとのプログラミングの特徴だ。

予定しなかった動きや、あり得ない分岐などなど、実はそのバグたちから発想が広がって、どんどんプログラミングが面白くなることがあるのだ。

バクがバクじゃなくなり、当初、予定していたこととは違うところにたどり着く。それもプログラミングの醍醐味ということを理解しておく必要がある。

ぼくは、このことが理由で、プログラミングの実践授業の中で、例題の通りにプログラムが動いたのを正解とすることは限定的にするべきだと考えている。

プログラム言語は、さまざまな機能を持っている。その一つひとつの機能そのものの役割を理解していく過程においては、例題の通りに動いたことが正解でよい。それぞれのプログラミング言語の文法を正しく理解することは、基本中の基本だからだ。

ただ、こういうプログラミング言語において、生徒たちは、たった1つの文字や小さな記号を打ち間違えただけで、プログラムが動かないという事実を経験することになるはずである。

この打ち間違いは発見しにくい場合も多々ある。また文法は正しくても、思ったように動かないときもある。

これらがプログラミング学習において大きなつまずきになり、プログラミング嫌いになってしまう要因となる。

日常では、少しぐらい言葉を言い間違えても、ミスコミュニケーションになることは少ない。それに慣れているから、プログラミング言語の融通の効かなさにがっかりするのである。

教師の方々には、その面倒臭さを上手に乗り越えさせてあげてほしいとお願いしたいのである。プログラミング嫌いを作るような学習になっては、なんの意味もないのである。