プログラミング教育・指導要領2024年への不安
PCの黎明期には、タイトル写真に見えてるみたいな「プログラマブル電卓」という商品がありました。
「プログラマブル電卓」は
programmable handheld calculator
本当にプログラムができたんです。
説明するのが難しいなと思うんですけど、がんばります。
計算式が1本道ではなくて、計算の途中で分かれ道がある。そんな物理現象があります。
*本当にあるんですよ。
ある条件では、計算式はこうだけど、もっと高温度になると計算式はコッチに変化する、とかね。
こういった計算式に対しても、プログラマブル電卓は対応可能なのです。
プログラミングに理解のある方向けに、プログラム言語風に書くと、以下の通りになります。
作業フロー(これは意味のあるプログラムではありません。どういう機能をプログラマブル電卓が持っていたかを説明するために書いたものです)
1:何か任意の数字を入力(input)
*注:数字ではなくて文字列が来たら、文字列を消去して元に戻る。
「ESC」キーが押されたら、アプリは強制終了。OSに戻る。
2:来た数字の2乗を計算し、さらに定数1.587をかける。
3:もし、その計算結果が1以上ならば、(if then構文)
変数 a=1 (変数aに1を代入)
4:もし、その計算結果が1未満ならば、(if then構文)
変数 a=-1 (変数aに-1を代入)
5:さっきの計算値 と 変数a とをかけ合わせ(乗算)、さらにその結果の数字のlogを計算する。
6:最終結果を画面に表示。
7:作業1に戻る
この例に示す通り、途中で分岐のある「計算式の全体」を保存しておいて、パパパっと計算ができるという、それはそれは便利な道具でした。
ラジくまるの場合は、自分の自由研究に使う目的で約80個くらいはプログラムを作りました。
*ホント、ネクラな理系大学生で困りますね。
その「自由研究」の経験が生かされた場面もあります。大学のゼミでは2個ほど、ささっと短時間でプログラムを組み、とても重宝しました。
理系で「数学&物理関係」の学生さんであれば、たとえば2次関数をx-y平面にグラフプロットしたい時に便利に使えた、と説明すれば、少しは理解しやすくなるでしょうか?
***
ところが、です。
時は流れ、2024年にはPythonという強力なプログラム言語が、多くの人に使用されています。
「グラフをx-y平面にプロットして表示せよ!」という機能は、Python上ではカンタンに「関数1個」で表現されています。
Pythonのユーザーは、さきほど説明したみたいな「分岐を要するプログラム」を書かなくても、1命令でグラフが描けるようになりました。
「プログラマブル電卓、最高!イエィ!」とか言っていたラジくまるの大学生時代とは、あまりにも状況が違いすぎるのです。
pythonは、早い・安い・ウマイの3拍子で、便利、かつ、早く目的の結果を獲得できるようになりました。良いことです。
良いことなんだけど、私は、我々オトナが、ちゃんと子供たちを教育しないと、とってもアブナイ状況になってることを心配しています。
それは、
何かを入力したら、何か「コタエ」が出て来る。
その「コタエ」というモノは、
「1本道で出て来る」ものなんだよね?
ぞんな風に誤解をしたまま、子供たちがオトナになる恐れがあるという心配です。
Python以上に強力なツールがこれからも次々と現れ、さらに短時間に答えが出て、さらに便利になることは間違いないでしょう。
別に、ラジくまるは便利になることを反対しているのではないです。
子供たち一人一人全員に、以下に書くみたいな教育をちゃんとやってほしい。と思っているのです。
「実はね!プログラムの中には、いっぱい分岐があったんだ。
計算結果は1個しか見えていないけど、たくさんの選択肢のなかから、1つが選ばれて、ここに出てきているんだよ。」
要するに、プログラミング授業の中で、
if (なになにの条件) then (その場合はこう)
if文について、ものすごい長時間をかけて授業して欲しいですってことなんです。
子供たちには、しっかりと、(プログラム内部の)if文を実感してほしい。実感させるには、if文の授業時間を長くするしかない。
そう考えています。
if ~ then 構文は、プログラミングの全てのキホンだと信じています。
理系大好き少年少女が、増えますように。
May the force be with you!
ゲームシステムのデザイナーって、何なの?どういう意味? そんな疑問は、私の記事群によってご理解いただけるものと期待してます。 ラジくまるのアタマの中にある知識を活用していただけるお方、サポート通知などお待ちしています。