スポンサーリンク

子供へのプログラミング教育が必要な理由

IT
スポンサーリンク

プログラミング教育がなぜ必要なのか?

うちの息子の小学校でも、去年だったかプログラミング教室が催されたんですよ。「催された」という表現なのは、まだ正式カリキュラムではなくて、あくまでその時だけの特別授業だったからなんですけどね。

子供へのプログラミング教育については、最近その是非がよくテレビでも取り沙汰されていますが、私は大歓迎です。

その理由は大きく2つ。

職業訓練として

プログラマーと言えば、80年代から人手が余ったことのない数少ない職業のひとつだと思います。とにかく慢性的な人手不足で、その需要はこれからまだまだ続くでしょう。

たとえプログラマーやSEといった職業に就かないとしても、コンピューターの知識はいろんな産業に関連するので、決して無駄にはならないはずです。

特に、私が新卒で就職した四半世紀ほど昔には、コンピューターのことがある程度分かっていて、その他一般の業務も分かる人間というのが深刻なほど不足していました。要するに橋渡し的な役割で、公的資格としては「システムアドミニストレーター」と呼ばれるものです。

パソコンについての顧客のクレームで、一般営業がテキトーなこと言ったら火に油注ぐことになって、今度は技術者連れてったらさらにガソリンまいて帰ってきたので、私が謝りに行ったなんてこともありました。当時の技術者は、おたく率が高くて、TPOに合ったトークが苦手だったりしたんですよ。

 

論理的思考力の養成

プログラミングとは、一言で言えば「コンピューターへの指示書作成」ということになります。具体的には、人間の望む作業をコンピューターが分かる言語に変換するという作業です。

そして、この作業は「つまり、どういうことか」の連続です。

例えば、昔のコンピューターは足し算ができても掛け算ができなかったので、6×5を計算させる場合、6と5を一旦コンピューター覚えさせ、「6に6を足してその結果を上書きする」という処理を(5-1)回繰り返すということになります。

面倒くさいですね。

「マリオを右に動かす」

コントローラーの右を押すとマリオが右に動くのは当たり前ですが、「右に動け」とコンピューターに言ったところで分かりません。「キャラクターが右に動く」ということは、画面左上を原点とする座標系で、X座標に一定移動量の数値を加算するということです。さらに、場合によっては、キャラクターを右に動かすのではなく、背景を左に動かす(スクロールさせる)処理が必要になります。え?何言ってるか分からない?

「名前を五十音順に並べ替える」

エクセルなどの表計算ソフト…まで高度なアプリケーションでなくとも、データの並べ替えはあちこちに出てきます。ランダムに並べられた人の名前を五十音順に並べ替えるという作業(ソート)は、人間なら直感でやってしまいますが、コンピューターには何らかの法則を作って教えてやる必要があります。

具体的には、名前の文字列を文字コードという数値に変換し、一つ一つ比較して数値の小さなものから並べ直すという処理になります。詳しく書くとキリがないので書きませんが、データ並べ替えはコンピューターの勉強で必ず出てくる処理です。

 

プログラミングでなぜ頭が良くなるのか

プログラミングにおける、この「つまりどういうことか」という思考法は、コンピューターに限らず役に立ちます。

知性の高い低いは、端的に言えば、

入力⇒内部処理⇒出力

の3ステップが、それぞれいかに高度に、いかにスムーズにできるかだと私は考えています。

「入力」は見たり聞いたりすること、「内部処理」は考えること、「出力」は内部処理したものを誰かに伝えるために何かしらの形で表現したり、記録したりすること、です。


「入力」は、例えば「虫」について議論する場合、まずは「虫」という言葉を知り、かつその定義が皆に通用する普遍的なものでなければいけません。例えば、Aさんは虫=昆虫と定義し、Bさんは虫=昆虫に蜘蛛などの節足動物を加えたもの、Cさんはさらにうじ虫やミミズなどのニョロニョロ系まで加えていたとしたら、それぞれ「虫」の定義が違うため、議論にならないわけです。参加者全員が賢ければ、「まずは『虫』を定義しましょう」と擦り合わせをすることになります。

「内部処理」は、例えば虫の有益性と有害性がテーマだとして、「食料としての虫」「土を作ったり植物の繁殖を助けたりする環境保全装置としての虫」「病気を媒介する装置としての虫」といった、虫の特性を羅列してそれぞれがどのくらいの損得をもたらすか評価・比較することになります。

「出力」はその考えた結果を、相手が分かるようになるべく平易な言葉で論理立てて説明する、というようなことですね。

 

プログラミング的思考は人間同士のコミュニケーションも円滑にする

議論が噛み合わないなんてことはよくありますが、それはまず入力の時点で言葉の定義の一致をさせてないことが非常に多いんですよね。先日のテレビでは「理系/文系の区別は必要か」というテーマで討論していましたが、まず理系文系そのものの定義が曖昧であることと、「区別」が具体的に誰がどのような形で区別しているのか分からないままで、討論としてはどっちらけでした。

それでも何となく討論が成立してしまうのは、それぞれが感覚を持つ人間同士だからであって、何の感覚も予備知識も先入観もないコンピューターは、厳格に間違いを指摘してきます。使いたい言葉は、冒頭で「〇〇という言葉を△△という意味で使います」と宣言する必要があって、宣言のない言葉を使うとエラーが返されます。(プロからの細かい突っ込みが来そうですが、その突っ込みは一旦控えてください)

 

小学校ではどんなプログラミングを教えるか

小学校で教えるプログラミングは、皆さんが想像するような文字の羅列みたいなことはしません。『スクラッチ』や『ブロックリー』といった、ビジュアル操作で直感的なプログラムを構築できるアプリを使います。

動画のリンクを貼っていましたが、削除されていました。「スクラッチ」や「ブロックリー」で検索してみてください。

中でもこの『迷路』は、プログラミングの基礎が詰まっていて大変面白いと思います。

こんなゲームみたいなものが本当に役に立つのかって?それが大いに役に立つんですよ。…と、少なくとも私は思っています。この手のアプリではプログラミングの基本的な思考手順が学べます。実際のプログラミングでは、それをさらにコードに書き換える必要があるのですが、それは記述方法の問題であって、割とどうでも良いことです。使う言語によっても記述方法なんて変わってきますしね。

さて、この迷路、人間が上から見ていれば解くも解かないもなく、誰でも一瞬でゴールに辿り着けるレベルなんですが、それを「前しか見えない」かつ「言われたことしかできない」ロボットに指示してゴールまで導かなくてはなりません

 

まっさらの機械に知性を与えるのがプログラミング

そして大きなポイントは、「指示はスタート時にしかできない」ところです。つまり、交差点に来たからといって「それを左に」というリアルタイムの指示はできず、「こういう場合は右に」「こういう場合は後ろを向いて」と条件によって行動を変える指示書を渡して、後は「さあ、行ってこい」と運命を見守るしかできないのです。

これってつまりは、単純な指示ではなく、状況を判断して行動を変えるというちょっとした【知性】を与えているってことなんですよね。要するに、やっていることは「はじめてのおつかい」なんです。「八百屋さんに行ってトマトを2個買ってきて。八百屋さんになかったら、その先のスーパーに行って買ってきて。お釣りで好きなお菓子を買っていい」と、あの番組に出てくる子供たちも、頭をグルグル回転させて状況判断しているわけです。

さて、この動画では、「左手法」をロボットに教えています。「左手法」とは、ずっと左手を壁につけたまま歩いていく方法です。これだといつかはゴールにたどり着けるんだから教えれば良いんですが、手のないロボットには少しまどろっこしい方法で教えることになります。これも、「左手法とはつまりどういうことか」を変換して教えているわけです。

『スクラッチ』や『ブロックリー』は無料アプリなので、是非お子さんにも試してあげてください。

にほんブログ村 ニュースブログ 話題のニュースへ
にほんブログ村

コメント

タイトルとURLをコピーしました