こんばんわ、TF's appsです。
今回の記事は【プログラミング教育】と【子供】に関する第二弾です。
↓↓第一弾の記事も興味があれば見て下さい
では早速本題に入ります。
ここで1つの問題です。
「歩行型ロボットが道路を直進歩行しています」
「この先に十字路があります」
「交差点の向こうまでいけばゴールです」
<問題>
ロボットへの命令を列挙せよ
◆皆さんはどれだけシーンを想像できましたでしょうか?
◆目的達成(交差点を超えたゴール到達)までにはどれだけの手順が必要でしょうか?
◆どこまでイレギュラーを想定できますでしょうか?
if 文を何個作りますか?
【以下一例】
・ロボットは直進できるのか?
・交差点で一時停止するのか?
・正面から障害物は来ないか?
・交差点を超えてどれだけ進めばゴールとするか?
・ロボットの状態は正常(=健康)であるか?
・途中でエネルギー切れはしないのか?
・空から何か降ってこないか?
・道路は歩行できる状態か?
・ゴールまでの時間の制限はないのか?
・・・・などなど
・・・
「ん!?」
・・・
何が言いたいのか!?
アルゴリズムは無限にある
それがプログラミングの世界
最適な手段(=解)は何か?
まずは要求を満たすか否か
要求が曖昧であれば明確に定義する
明確に出来なければ保証できる条件を提示する
プログラミングの世界で最も重要なファクターの1つは要件定義であるという事です。つまりは、今回の記事で一番伝えたい事です。
色んな事が想定できてもif文の化け物となるプログラムは最適とは言えない!!
目的達成までに最低限でかつ最高スペックを想定ができるプログラム(if文の数が最適)がベストであるという事です。
上記で プログラミングの世界でと言いましたが...
どんな事でも「人は目的が明確でないと正確な行動はできない」ですよね!?
逆に目的(=要求)が明確であれば無駄な行動はしなくて済む。
無駄な行動は排除できて、達成するまでの時間も短くなる。
ぜひとも学校教育でスタートするプログラミング教育においても「この要件定義の大切さを伝えて欲しい」と切に願う!!
なぜ私が最近「プログラミング教育」に関して記事を書くか?
今はまだ幼い自分の子供たちへの未来のメッセージにしたい^^v
今、父親として伝えたいことは下記の事である。
「常に目的を意識せよ」
「目的を自身の中で腹落ちせよ」
如何でしたでしょうか?
プログラミング教育について考えてみました。
まだまだ伝えたい事は山ほどありますが今回はこれまでとします。
それではまた次回お会いしましょう♪