小学校でプログラミングが必修化されるなど、プログラミング教育がにわかに脚光を浴びている。では、プログラミングの特徴、魅力や意義はどこにあるのだろうか。ゲーム・IoT研究室の大見嘉弘先生は、コンピュータは「融通が利かない存在」だと話す。
「たとえば電子メールの『アドレス』と郵便の『住所』で考えてみると、メールアドレスは極めて厳格で、一文字間違っただけで届きません。これはメールを扱うプログラム自身が厳格に動作するから。アドレスの多少の間違い(あいまいさ)をプログラムで補おうとすると、プログラムが途端に複雑になりますし、誤って赤の他人にメールが届いてしまう可能性も生じます。
一方で郵便の住所は、多少間違っていたり不足する部分があっても、郵便局の職員が補ってちゃんと届けてくれますよね。このように人間は臨機応変、柔軟に対応できますが、コンピュータはプログラム通りに動作し、全く融通が効かない存在なのです」
では、プログラミングをどのように学び、どうすれば上達していくのだろうか。
「ポイントは演繹法と帰納法です」と大見先生。プログラムが「書いた通りに動く」のは、コンピュータが論理に基づいて動作するためで、これと同様の思考が演繹法だ。代表的なものが三段論法。これは「太郎は人間である。人間は死ぬ。ゆえに太郎は死ぬ」というもの。
「ただし、人間はそもそもこの演繹法が苦手。1つぐらいであれば誰でもできますが、これを幾重にも組み合わせようとすると、大多数の人は音を上げてしまいます。日常生活の中で多くの人は主に『帰納法』を用いています」
帰納法は、「Aさんの長男は優秀だ。次男も優秀だ。だからAさんの子どもは全員優秀だろう」といった思考のことで、実際にはAさんの子どもは全員優秀かもしれないが、そうでないかもしれない。演繹は前提が正しければ結論も必ず正しいが、帰納は、結論が必ず正しいとは限らないのだ。
このようにプログラムの動作は演繹的であるが、ほとんどの人は演繹が苦手なため、いわゆる試行錯誤を行うのが普通だ。「初心者の場合は、もはや帰納的でもなく、手当たりしだいに書くというケースが多いと思います。その後、プログラムがうまく動いた経験を積んでいくと『以前こうやってうまくいったから、今回も同じようにしたらうまくいくだろう』と帰納で考えて、徐々にプログラムが思い通りに動く確率を高めることで上達していきます」と大見先生。
「この上達への道のりは他の学問でも同じです。ただ、プログラミングは最終的にプログラムが思い通りに動くことで、正解に辿り着いたことが確実に分かります。このような分野はなかなか他にないといえるでしょう。さらに、作ったプログラムを使って、自分が楽をしたり、他人に使ってもらって喜ばれるなど、人の役に立てることができる。このため、達成感や満足もひとしおです」
演繹法や帰納法は論理的思考の一種。論理的思考は一貫して筋道が通るように考えることであり、問題解決や高度な仕事を遂行するために欠かせないことから、近年、重要視されている。
「プログラミングは生産的な行為であり、達成感も大きく、論理的思考の実践的な訓練として効果が高いと考えています。そのため、将来プログラミング以外の場面でも、論理的思考が必要な場合に役立つと考えています。ただし、『正解しただけで満足する』『コピー&ペーストして自分で書いたと勘違いしている』という場合もあり、『たまたま正解だった』ということも多いので注意が必要です。論理的思考の訓練をするためにプログラミングをするならば、『こういうものを作りたい』と自分で課題を創造し、完成するまで粘り強く実践し、『なぜこう書いたら正しく動くのか』を深く考える姿勢が重要です」