【親・指導者向け】プログラミングとはコードを書くことではない

プログラミング基礎

お疲れ様です。YUmarunosukeです。

今回は、自己紹介でも記載したとおり、
プログラミングに対する苦手意識を少なくするための考え方
を書いてみます。

この記事はこんな人に読んでもらいたい

  • 「プログラミングって難しい・難しそう」と思った方
  • 「子供にどうプログラミングを教えればよいのだろう?」と思った方

この記事を読むとこんなことがわかります

  • プログラミング = コンピュータに指示すること・コードを書くこと では難しい
  • プログラミング = 『あるべき姿』に向けて『動作』と『判断』を並べること

プログラミングとはコードを書くことではない?

皆さん、”プログラミング”って聞くと、何をイメージされるでしょうか?

世の中にあるプログラミングの解説には、

プログラミング = コンピュータに指示すること、指示するコードを書くこと

と書かれていることが大半だと思います。

もちろん合っています。でも、不充分というか、定義が狭いと私は考えます。

じゃあ、私が考えるプログラミングとは何か、

プログラミング = 『あるべき姿』に向けて『動作』と『判断』を並べること

だと考えたほうが、プログラミングって取っつきやすくなるのではないかと考えます。

 

・・・何が違うの?と思われるのではないでしょうか?

違いは、プログラミング と コンピュータ を結びつけていない ことにあります。

プログラミングとは『あるべき姿』に向けて『判断』と『動作』を並べること

世の中には「プログラミング」と明確に定義されていないながら、
仕掛人(プログラマー)が人の行動を決める仕組みを作っています。

動かしたいように人を動かすために必要な要素として、

  • あるべき姿
  • 判断
  • 動作

以上3つが必要であると、私は考えます。

具体的な例でご説明しましょう。

例:スーパーマーケットのレジ待ち

必要な要素の整理

  • あるべき姿:客がソーシャルディスタンスを守って並びレジ前までたどり着く
  • 判断:
    1. どの客の後ろに並ぶのか?
    2. どのくらいの距離をとるのか?
    3. 前の客が進んだか?
    4. 前に並んでいるお客がいるか?
    5. レジが空いているか
  • 動作:
    1. すでに並んでいる客の後ろに移動させる
    2. すでに並んでいる客と距離を保って立たせる
    3. すでに並んでいる客が進んだら列を詰める
    4. レジ前に客がいないか確認する
    5. レジまで進む

プログラミングの具体的な流れ

客が並ぶレジを選ぶ

[判断1] 客がレジ待ちをしているか? → (No)店員前に移動に移動する
↓(Yes)
[動作1] すでに並んでいる客の後ろに移動させる

[判断2] ソーシャルディスタンスを保っているか →(Yes)判断3へ 
↓(No)
[動作2] すでに並んでいる客とソーシャルディスタンスを保てる場所に立つ

[判断3] 前の客が動いたか? →(No)動くまで待つ
↓(Yes)
[動作3] 前の客がいた場所に移動する

[判断4] 前に並んでいるお客がいるか? →(No)判断3に戻る
↓(Yes)
[動作4] レジ前に客がいないか確認する

[判断5] レジが空いているか →(No)動作4に戻る
↓(Yes)
[あるべき姿] ソーシャルディスタンスを守って並びレジ前までたどり着く

コンピュータに指示することなく、『あるべき姿』になっていますよね?

これが、プログラミングだと私は考えます。

ただし、この手順を考えるだけでは、実際のお客さんはこのように動いてくれません。

じゃあ、どうすればいいのか?

・・・

このご時世、皆さんなら見たことがあるでしょう。

床に足跡マークがついていたり、進むルートが記載されているのを見たことがあるはずです。

これは、お客さんを先ほどの手順のとおりに動かすために、
店員さんが工夫して見える化したものです。

これは、一般的なプログラミングにおけるコード作成にあたります。

ということで、パソコンについて知らない、コードが書けない人でも、
プログラミングってできるんですね。

まとめ

この記事では、プログラミングに対するそもそもの考え方から変えることができないか提案してみました。

色々なご意見があるかもしれません。

もしかしたら、このような考え方がしっくりくる方が少しでもいらっしゃるのではないかと思っています。

お子さんと接する際のご参考になれば幸いです。

では、次の記事までごきげんよう。

コメント

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