最近気になっているニュースがあります。それは小学校でのプログラミングの授業を必須にするというものです。
プログラミングをわかってないアホな文科省が先導しているらしいですが、マジで狂気の沙汰だと思ってます。小学校での英語授業といい、最近の傾向は流行りのものを幼いうちからやっておけばいいと思ってるんですかね。ちょっと安易すぎます。誰か止めてあげる人はいないのでしょうか?
今回はシステムエンジニアの端くれとして、いかに小学校からプログラミング(という名の何か)をやることがあほらしいかを解説します。
小学校でのプログラミング授業の実態
Content
まず、小学校でのプログラミングという名の授業で何を教えているか、何をやっているかご存知ですか?
昨今の流行である塾でやってるプログラミングの授業も同様ですね。
この内容を現役のプログラマーやシステムエンジニアが聞いたら、100人が100人首をかしげるでしょう。はっきり言ってそれは”プログラミング”ではなく”プログラミングと呼んでいる何か”です。
小学校やいわゆる塾でやっているプログラミングとはソースコードは一切登場せず、やっていることはただのアルゴリズムの授業なのです。
どういうことかというと、小学校でやっているプログラミングと呼んでいる授業は、iPadのような情報端末で、”命令”として用意された箱をただ組み合わせて、望みの挙動をさせるようなことをしています。
例えば下記のようなソフトを使って、画像のネコを指定された動きになるように、命令を組み合わせるだけです。
まじでアホかと・・・
こんなのプログラミングじゃない!
現役のプログラマーがこんなの見たら、発狂しますよ。甘く見るなと。
プログラミングはこんな甘いもんじゃないです。確かにプログラムとは命令の組み合わせではありますが、こんなのエッセンスにもなってないですよ。
Wikipediaによるとプログラミングの定義は以下です。
コンピュータのプログラミング(英: programming)とは、コンピュータプログラムを作成することにより、人間の意図した処理を行うようにコンピュータに指示を与える行為である。
まあWikipediaで定義を確認するのもなんですが、今回はITの話なので、WEB上の百科事典はちょうどいいでしょう。
これによるとプログラミングとは、コンピュータプログラムを作成することなんですよ。なんかよくわからない用意された命令を組み合わせて、挙動を考える行為ではありません。
確かに本当のプログラミングでも様々なユーティリティやライブラリー、関数を駆使して望みの挙動を行うようにソースを書いていくわけですが、中身が何をしているのかがまったくわからない表面上だけの(本当の意味の)”部品”を組み合わせて何かをさせる行為ではありません。
こんなの小学生が”慣れる”以前に”勘違い”するリスクの方が高いです。中身のアルゴリズムがわかっていて使うのと、よくわからないものを組み合わせるだけでは天と地ほどの差があります。
またプログラミングがこんなに簡単だと勘違いしてしまうことで、自分の適性を見誤る可能性があります。
みたいな感じで勘違いしてしまうと、将来的に痛い目に会うことになります。プログラミングはそんな派手なもんじゃなく地味な作業なんです。
コーディングしては、コンパイルして、コンパイルしてはエラーを解消してetc・・・プログラミングはこの地道な作業を楽しめる人でなければとても勤まらないのです。ここを勘違いして、小学校の授業でやっているような表面的な派手さに慣れてしまうと、将来プログラマーの道に進んだときに、「こんなはずじゃなかった・・・」と後悔する可能性大です。
こんな簡単なことは授業でやることではない
百歩譲って、「こういった命令の組み合わせを考えることで論理的思考を育てることができる!」「プログラミングを学ぶ入り口として、アルゴリズムの勉強になる!」と思ってたとしたら大きな間違いです。
アルゴリズムの勉強は、私たちの普段の生活の中で普通に行っていて、iPadで出来上がった命令を組み合わせることよりもはるかに高度なことを自然体で学んでいます。
例えば朝起きて、学校に行くまでの準備をすることもアルゴリズムの勉強です。「起きて→朝食を食べて→歯を磨いて→その日の持ち物を整理する」これだって立派なアルゴリズムです。
また知らない土地の目的地に地図を頼りに行ってみることだってアルゴリズムです。地図を頼りに目的地に行くまでには2ブロック進んで、右に曲がって・・・と複数の工程を組み合わせることで達成することができます。
さらに言ってしまうと、こんなの最近のゲームをやったほうがはるかに多くの経験と学びを得ることができるでしょう。それなのにこのプログラミングの授業のために一体いくら金を掛けているのか・・・
商用にしたらチープすぎて誰も買わないできのものが、なぜ授業足り得るのか理解に苦しみます。
教えてるのが素人教師
さらにこの問題を悪化させているのが、プログラミング(という名のなにか)を教えているのは、プログラムなんて書いたこともない素人教師だということです。(これはどうも現場も混乱しているようですが・・・)
先ほどから強く言ってきましたが、プログラミングはそんな甘いもんじゃないです。それをプログラミングの酸いも甘いも知らない素人が教えてるんですから、もうカオスです。
一体彼らはプログラミングがどういうものなのか理解しているんでしょうか?
まさか出来上がった命令のようなものを組み合わせることがプログラミングと思ってませんよね。
まったく無知の小学生に対して、プログラミングなんてまったく知らない教師が”教える”というこんな滑稽な光景が繰り広げられているのです。もう笑いを通り越してあきれますよ。これを文科省は”プログラミング教育”と呼んでいるのです。
まあ文科省の人間もとりあえず流行りのプログラミング教育をしておけばいいだろくらいにしか考えてないんでしょうけど。文科省の人間でプログラミングが一体どういうものかわかっている人が何人いるのか・・・
プログラミングは基礎学問の積み重ねである
結局、私が言いたいことは現状の学びの内容は十分にプログラミングの思考につながっているということなんです。
プログラミングは最も根底的な概念として数学(数式)があり、それを組み合わせていく論理的思考力があります。そこにコンピューター科学が加わって初めてプログラムとなるのです。
そういったことをすべて飛ばして、”命令を組み合わせること”を学んでもまったく意味はないのです。
そのためそういった基礎学問がまだ整っていない小学生のうちから、プログラミングなんて学ぶ必要はないんです。興味のあるヤツは自分で見つけて、自分で勉強しますよ。
これは小学生の英語学習も同じ話ですね。まだ母国の言葉である日本語もまともに出来ないのに、なぜ英語を学ぶ必要があるのか・・・
言語は思考と同等です。その根底の思考が整わないうちに異なるもう一つの思考を取得しようとしてなんになりますか?
将来、英語は出来ても、深い思考はできない人間が量産されていくだけです、
つまり文科省は一旦落ち着いて拙速に体系を見直さないほうがいいということですね。もちろん学問はどんどん進化していますが、基礎となる学問は変わってないのですよ。あくまでその組み合わせである応用方法が進化しているだけなのです。
もちろん興味のある小学生は自分でどんどん本物のプログラミングを学んでいけばいいと思います。しかしそれをまゆつば学問として、小学生全員に習わせるのは狂気の沙汰です。
まとめ
最近、小学生からプログラミングを学ばせようとする風潮がありますが、それがいかに馬鹿らしいことなのか解説しました。
プログラミングを知らない文科省の人間が企画し、プログラミングを知らない現場の教師が教え、間違ったプログラミングの概念を小学生が学ぶという滑稽なことが行われようとしています。
現役のシステムエンジニアとして警告します。