やしお

ふつうの会社員の日記です。

プログラミング的な信仰

 小学生に「プログラミングって何?」と訊かれたらどう答えるのが良いだろうかと、しばらく考えていた。日常的に接している小学生などいないのに、益のないことだ。


 例えばのどが渇いたなと思ったとする。冷蔵庫にいってジュースを飲む。簡単なことだ。ところでこれは、「どうやって」やったのだろう。もし何も知らないロボットにそのやり方を教えるとしたら、どうしたらいいのだろう。ひとつずつ手順を教えてあげる必要がある。
 冷蔵庫のドアを開ける、冷蔵庫の中からジュースのペットボトルを取り出す、ジュースをコップにつぐ、飲む、ペットボトルを冷蔵庫の中にしまう、冷蔵庫のドアを閉じる。
 もうこれがプログラミングだ。
 何か達成したいことがある。それを実現するための手順を考える。「言われればできる」くらい簡単な行動にまでバラバラに分解して、順序良く組み立てる。それがプログラミングのこころだ。
 そうして「のどが渇いたときにすること」の手順を君はロボットに教えてやる。ロボットがちゃんと動いてジュースを飲んだ。君は満足そうにうなずく。しかしその隣で、お母さんが怒っている。
「なんでロボちゃんはジュース飲んでる間、冷蔵庫開けっ放しなのよ。冷気逃げちゃうじゃない!」
 たしかに。そこで君は「ジュースをコップにつぐ、飲む」の前に「冷蔵庫の扉を閉じる」を入れて、後ろに「冷蔵庫のドアを開ける」という手順を追加する。ロボットに新しい手順を教えて、またやらせる。またお母さんが怒っている。
「ちょっと! ロボちゃんが冷蔵庫あけたまま止まってるんだけど!」
 お母さんがロボットを乱暴に冷蔵庫から引きはがす。床に転ぶ。うつろな瞳。かわいそうなロボちゃん。
 君はそれを抱いて考える。どうして止まってたんだろう? 「冷蔵庫のドアを開ける」はクリアしたけど、「冷蔵庫の中からジュースのペットボトルを取り出す」ができなかったみたいだ。原因を考える。あ、冷蔵庫の中からジュースがなくなってる! 「ないとき」にどうするのかも教えてあげないといけない。
 「冷蔵庫のドアを開ける」の後に「冷蔵庫の中にジュースがあるかないか確認する」を入れる。ない場合は、蛇口の水をコップについで飲むようにする。「よっしゃ!」君は新しいプログラムをロボットに教えて、動かす。お母さんが激怒する。
「どうして!? どうしてロボちゃんは冷蔵庫をあけっぱなしにしているの!?」
 あ、「ジュースがないとき」の後に「冷蔵庫のドアを閉める」のを忘れてた。……


 私自身は、学生時代には手続き型言語C言語)しかほとんど触っていなかったし、就職して以降はほとんどプログラミングと無縁の仕事だった。せいぜい上のたとえ話程度しかできない。
 改めて考えてみると、このプログラミングの態度は日常的なものだ。何か問題を解決したい、何か自分の能力を引き上げたい。そのとき、スタート地点(前提条件や現状)を把握する、ゴールを設定する、スタート・ゴール間を実行可能なステップに分解する、手順を組む、効率の良い手順の組み合わせを探す、といったことを当たり前に進めている。
 そして逆に、そうしたプログラミングが可能であれば、自分はそのゴール地点に到達可能なはずだと信じているらしい。実際には感情の問題でステップを実行できなかったり、遅かったり、あるいは上手く分解できなかったりすることはある。それでも底の底では、手順さえ組めれば進めるはずだと信じているようなのだ。


 普段はこの「プログラミングの態度」を自分ではそれと意識していない。意識にすら上らせないままに生きているが、これは別に普遍的な態度でもない。他人がそのような態度で問題解決にあたっているとも限らない。それを、自分にとっては当たり前のことだからと、忘れていた。
 他人と接していると、「他の人にもできているから、自分にもできるはずだろう」と考える人と、最初から「自分には無理だな」と考える人とがかなりはっきり分かれているように見える。「プログラミングの態度」を持っているかどうかが、その分かれ目の一つとして作用しているのではないかとふと思った。
 コンピューターでのプログラミングの経験は必須ではない。ただ「ステップに分割できれば、自分もその梯子を上ってそこに到達できるはずだ」と信じているかどうかの境だ。私の場合はそれが、学生時代(高専生時分)にプログラミングを課せられるうちに染み込んだのかもしれない。
 その態度への信仰を手放しに顕揚するつもりはない。むしろ「プログラミングの態度」をほとんど無意識に施していることに注意を払うべきだと思う。この態度は万能ではないし、ある体系は常に何事かを取りこぼし続ける。(それはどこかチューリングマシンの停止性問題とかかわりがあるのかもしれない。)
 自身の言動や思考が何に規定されているかを忘れて語り、考えるのは楽だとしても自由ではない。