2020年に、小学校でプログラミングの授業が義務化されるという話です。
職業としてプログラマーをしている人、あるいは、これから目指そうとしている人は考えて欲しいです。
プログラミングを学ぶとはどういうことなのかを。
多くの人は、勘違いをしています。プログラム言語を使って、プログラムを作ることをプログラミングだと思っています。これは間違いではありませんが、そういう次元の話ではありません。
もっと、奥の深い話です。
プログラミングを学ぶことで論理的思考が身につくの?
これからの時代、プログラミングは必須のスキルだ!
と、雑誌やネットの記事では、そのように騒いでいます。
根拠は、「論理的思考」が身につくからだそうです。
果たして、本当に身につくのでしょうか?
プログラマーをしている人は考えてみてください。論理的思考になっていますか?
そもそも、論理的思考とはどういう思考でしょうか?
ある目的を果たすための手順を事細かに作り上げる思考でしょうか?
たしかに、プログラムを作るには、一つ一つプログラム言語でコンピューターに命令を正しく伝えなければいけません。
例えば、目覚まし時計を考えてみましょう。
毎週月曜から金曜の午前6時に、モーニング娘の「LOVEマシーン」という曲をならすようにしたいならば、どのような手順が考えられるでしょうか?
- 時計の時刻を確認する
- 今は、午前6時ちょうどか?
- そうであるなら、曜日を確認するため次へ。違うならば、1に戻る
- 曜日は月曜日か?月曜日ならば、「LOVEマシーン」を再生し、9へ。違うならば、次へ。
- 曜日は火曜日か?火曜日ならば、「LOVEマシーン」を再生し、9へ。違うならば、次へ。
- 曜日は水曜日か?水曜日ならば、「LOVEマシーン」を再生し、9へ。違うならば、次へ。
- 曜日は木曜日か?木曜日ならば、「LOVEマシーン」を再生し、9へ。違うならば、次へ。
- 曜日は金曜日か?金曜日ならば、「LOVEマシーン」を再生し、9へ。違うならば、次へ。
- 1に戻る。
単純に手順を挙げるとこのような感じになります。他にも手順は考えられます。
一般的に、論理的思考とは、筋道をたてて、論理的に話を進めていく考え方です。
上記の手順は、きちんと目覚ましをならすという目的を時刻を確認し、曜日を逐一確認し、そのときが来たなら、曲を流すという筋道をたてて、話を進めています。これは論理的でしょうか?
では、この手順はどうでしょうか?少し手順を変えていますが、実現したいことは同じです。
- 今日は土曜日か?土曜日ならば、1へ。違うならば、次へ。
- 今日は日曜日か?日曜日ならば、2へ。違うならば、次へ。
- 今は午前6時ちょうどか?そうならば、「LOVEマシーン」を再生し、1へ。違うならば、1へ。
どうでしょうか?だいぶすっきりしました。
最初の手順は、月曜から金曜までの時刻を逐一確認していましたが、次の手順は、土曜か日曜以外は月曜から金曜であるという根拠があるからこその手順になっているのが分かると思います。その前提条件がなければおかしな結果になってしまいます。
この2つの手順は、どちらも論理的になっています。根拠がはっきりしていて、その通りに行えば、目的を果たすことができるからです。
よく品質の悪いプログラムの例が出されたりしますが、根拠がはっきりしていない、目的を果たせていないなどの結果になるものを「品質の悪い」プログラムと呼ぶのです。これらは論理的ではないということです。
では、話を戻すと、プログラミングを学べば論理的思考が身につくのかということですが、答えは、NOです。
プログラミングに依存した他力本願的なことで論理的思考がつくものではありません。
プログラミングを学ぶこととは?
論理的に目的を果たすための手順を考える努力をするから、論理的思考が身につくのであって、決して、プログラミングを学ぶから論理的思考が身につくのではありません。
プログラムを学んだプログラマーが全員論理的思考の持ち主であれば、そもそも間違い(バグ)だらけのプログラムができるはずがないのです。100%バグのないプログラムなど存在しないのです。
ですから、ここで最重要事項をお伝えしますが、
プログラマーという職業が10年後にはなくなっている職業に挙げられているのです。
脅しでもガセでもなく、ほぼ今のスタイルでのプログラマーは、皮肉にもコンピューターにとって変わられることでしょう。
プログラミングを学んで得られる「得」とは、プログラム言語の文法やら書き方などを覚えるという低次元のレベルの得られるものではなく、論理的思考を身につけるために、努力をしなければいけないという思考を身に付けることができることなのです。
決して、プログラミングを学んで、論理的思考が身につくという他力本願的なことではありません。自分が論理的思考ができるようになるきっかけでしかないのです。その程度のことなのです。
先の手順の例でも述べましたが、アラームを鳴らすという目的は変わりませんが、それを実現させる手順(手段)は幾通りもあるのです。
つまり、プログラミングを学ぶということは、根本的な目的を明確にし、その目的を果たすために幾通りもの案を考え、その中からもっともよい案で実現させられるようにすることなのです。これこそが、論理的思考なのです。
これができるようになれば、はじめて、ユーザーが困っていることを何とかしてあげることができるようになるのです。
決して、目的を忘れてはいけません。誰もが羨む美しいソースコードなどないのですから、自分よがりにだけはならないよう注意が必要です。
カテゴリ:プログラミング