閑話休題「アルゴリズム」

すっかり筆無精になりました、新平です。なかなか忙しくて、架鉄雑考の筆が進まないので、別なネタで間を埋めることにします。

僕は、根っからのプログラマーというか、システム開発という活動に一定の快感を覚える性分です。そういうわけで、仕事以外でもそういうシステムを考えることが多いのですが、もっと身近なところに話題を落としてみましょう。

アルゴリズムとはなんぞや?

お料理って、楽しいらしいですね。僕はなかなか簡単なものしか作れませんが。
で、お料理って、手順がいっぱいありますよね。
ラーメンなら、麺を茹でて、野菜を茹でて、スープを作って、盛り付ける。
これをもっと細かくしてみましょう。
麺を茹でるなら、麺を取り出す、袋から開ける、鍋を用意する、鍋に水を入れる、火をつける、沸かす、麺を入れる、麺を茹でながらほぐす、火を止める、ザルにあげる、鍋をシンクにおろす。
野菜を茹でるなら、野菜を取り出す、まな板を用意する、野菜を袋から開ける、包丁を用意する、野菜を切る、包丁をシンクにおろす、鍋を用意する、鍋に水を入れる、火をつける、沸かす、野菜を入れる、野菜を茹でる、火を止める、ザルにあげる、鍋をシンクにおろす。

こうしてみると、共通してたり、似てる作業って多いですよね。同じ作業をまとめて1回でできたら、作業効率があがりませんか?
このように作業内容を「分解」し、「組み合わせ」たり「一般化」「抽象化」してみたりして、再構築した段取りを「シミュレーション」した上で行動を実行することを「プログラミング的思考」といい、再構築した段取りを「アルゴリズム」といいます。
詳しくはこの番組を見ると面白いでしょう。

https://www.nhk.or.jp/school/sougou/texico/

「プログラミング」にアレルギーを持たないで

私たちの日常生活は、プログラミング的思考に基づいて段取りを再構築すると意外と時間が生まれるものです。
「アルゴリズム」「プログラミング」という言葉を聞いただけで「関係ない」と思われる方がいると思いますが、その「考え方」は私たちの日常生活をものすごく分かりやすく、そして豊かにしてくれます。

そして、その考え方の根幹をなすのが中学高校の数学。
公式を暗記することよりも、なぜそうなるのか?を、頭の中で整理することの方が、目的から見るとよっぽど大事だったりするのです。そして、暗記だとたいていテストの時に思い出せなくて自爆します。
なぜそうなるのか?がわかっていると、自分で公式を導出できるからテストでも勝てるんですよね。
実際僕は、センター試験でもあまり公式を覚えていませんでした。ただ、導き方は分かっていたので、そこからパッと思い出して使ってました。

コンピュータ相手のプログラミングは別にできなくてもいいと思います。それを生業にしない限り使わないので。
というか、日本人みんなJavaやCを書けるようになると我々が食いっぱぐれになるのでむしろ…うん。大声では言えませんがつまりそういうことです。

大事なのは、その「考え方」、「ロジック」。あるいは、「ロジカルシンキング」そのもの。
直感や徒然なる思考と組み合わせたり使い分けると、人生がもっと濃くなります。
そういう意味では、プログラミング言語を子供たちに教えるのは至極間違いで、それでは結局「数学嫌い」の増幅装置にしかならないのです。
具体的な感覚をもって教えられるという意味では、前述の「テキシコー」は非常にいい教材だと思います。

プログラミング的思考、いかがでしょうか。

この記事が気に入ったらサポートをしてみませんか?