プログラミングと子供の心

ある母親が最近ひとりで買い物に行けるようになった子供におつかいをたのみます。
母「豆腐を1パック買ってきて。もし卵売り場に卵があったら、2パック買ってきて。」
卵売り場には、卵がじゅうぶんにあったとします。

帰ってきた子供は、
①豆腐を1パックと卵を2パック買ってきました。
②豆腐を2パックを買ってきました。
③豆腐を3パック買ってきました。
それぞれのケースで、子供になんていうか、少し考えてみてください。

①のケースが正解、②と③のケースは間違いを指摘する、という方が多いのではないでしょうか。
この問題、全部正解だと思うんです。
あえていうなら、最初の母の指示が適切でなかったことが問題なのではないかと。
①は卵売り場に卵があったから、卵を2パック買った。
これも間違いではないと思います。
ですが、②のケースでは、卵売り場には卵があるかどうかを確認した上で、卵があったから、豆腐を1パックではなく、2パック買った。論理的には全く正しいです。
③のケースでは、豆腐を1パック買ったうえで、卵売り場に卵があったので、豆腐をさらに2パック買いました。これもまた、矛盾のない解釈です。
このように、最初の指示にはいくつかの論理的に矛盾のない解釈の余地があり、子供は正しい解釈をした、あえていうなら、最初の指示が適切ではなかった、と、きちんと自分の非を認めることができるでしょうか?

子供は、びっくりするくらい素直です。
子供にとって、親は絶対的な存在です。
親がクロといえば、それはもうクロなんです。
文法的に正しくても、論理的に矛盾がなくても、親が間違いだと言ったら、間違いだと素直に覚えます。
でも、子供は、本当の意味で納得はしていません。だって、間違ってないから。論理的に矛盾がないから。
そうして、子供の自由な発想力、創造力はどんどん削られていきます。
最初に、子供が自分の思惑と違う行動を示したときに、きちんと向き合って、意図を聞いてあげられるか。子供にもちゃんと理屈があって、自らにも非があると素直に認められるか、そういうことの積み重ねが、子供の能力を伸ばすのだと思います。

前置きが長くなりました。
なぜプログラミングがいいのかって話でしたね^^

結論から言うと、プログラミングには正解があります。
期待通り動けば正解。動かなかったら間違いです。
そこには、大人か子供かなんかに関係なく、解釈も書き手が込めた思いにも、まったく忖度なく、論理的に正しければ動くし、動かなかったら間違いです。

そして、その結果は、即、判定されます。
間違っていることがわかったら正しく書き直せば、過去にどんな間違いをしていようが何のわだかまりもなく、正しく動作してくれます。

まぁ、当たり前ですよね。
でもそんな当たり前に公平な評価をしてくれるプログラミングが、子供心にとってもすっきりと腹落ちしたんです。

で、プログラミングが好きになりました。

結果的に、直接仕事にはなっていないけど、仕事にも趣味にもとても活用できています。

以上、長くなりましたが、子供にプログラミングをさせましょう。大人もプログラミングを学びましょう!というご提案でした。