プログラミング的思考とは何か?もっともシンプルな答え
一昨日あたりに、やたらとFacebookでシェアされていたこの記事を読んで以来、ずっとモヤモヤしていたので書いてみます。
シェアしている人たちの中には、なるほど!とか、やっとわかった!
みたいな感想が多かったのですが、残念ながら私にはよく分かりませんでした…
正確に言うと、内容は理解できるのだけれど
こんなに難しく書かなければならない理由がよく分かりませんでした。
この記事の作者も、読者も、私よりよっぽど知性も高く経験も豊富なのだと思っているので
単に私の理解力、想像力の足りなさが原因なのだろうと本気で捉えていますし
だからこそ、この投稿をすることに迷いもあってモヤモヤしていたのですが…
解消されないまま週末を迎えるのも身体に悪そうだったのでやっぱり書くことにしました(笑)
というわけで、探プロ的理解として
最近話題のプログラミング的思考とはなにか?
に答えてみたいと思います。
私が普段のワークショップで子どもたちに説明している言葉を使って説明します。
プログラムとは、命令の集まりである。
そして、プログラムをコンピュータが分かるように作ることがプログラミングである。
なので
これを実現するために必要な思考をプログラミング的思考と呼びます。
だから、記事にあるように
プログラミング的思考とは、コンピュータに仕事をさせるための思考である
というのは当たり前の解釈だと思うんですよね。
コンピュータは自分で命令を作ることはできないのだから
(問題を解決するための)命令として最適なものを人間が考え、コンピュータに渡す
と考えるのも自然なことです。
プログラミング的思考については、これ以上説明する必要はないのではないかと私は思っています。
この思考は、すごく大雑把に言ってしまえば、コンピューターのように考えられる思考
とも言えます。
なので、要するに論理的思考なんですよね。
私は、こういったプログラミング的思考はあくまでも問題解決のための思考であって問題発見のための思考ではない と捉えています。
ですが この記事の中でも紹介されている、有識者会議での取りまとめ内容には、問題発見という言葉が使われています。
もしかすると、問題発見のことを問題の原因を発見すること、もしくは、問題解決に至る手がかりを発見すること と捉えているのかもしれません。
そうであれば合点がいきますが 問題発見というのは問題そのものを発見することであって
それはプログラミング的思考では身につかないだろう
と20年近くプログラミング的思考を駆使してきた自分自身の経験から断言できます。
ところで、私が子どもたちに説明している中にある
コンピュータが分かるように作る
のところは、探プロの学習フレームワークでいえば
アルゴリズム化とコーディングに該当します。
そして、モデリングが何かと言えば、これこそが問題発見のためのステップなんですね。
この辺の説明がこれまでなかなかうまくできなかったのですが
この記事のおかげで、ちょっと整理が進んだように思います。