論理的思考


普段は何気なく見過ごしてしまったり、特に意識することのない「○○なのはなぜか」といったことについて調べたり、考えたりすることが最近増えた。身近なところで言えば、「なぜ蛇口は左に回すと水が出て、右に回すと止まるのか」とか、同じ蛇口でも「レバータイプのものはなぜ上げると水が出て、下げると止まるのはなぜか」とか、「信号の右が赤なのはなぜか」とか。まぁきりがないくらいそういうことは出てくるわけで。こんな一見どうでもいいことを考えることに意味などないと思うかもしれないが、実はそうでもない。大抵の場合はそうなっている理由がちゃんとあり、論理的に他人に説明することが可能である場合が多い。つまり普段から、その手の素朴な疑問について考えるということはすなわち、自分の論理的思考力を高めることになると考えている。プログラマという仕事は、論理的思考があってこそ成立する。なぜならプログラミングとは完璧に論理の塊であるからだ。世の中のソフトウェアの、ほとんど全てにバグがある(もちろん、数十行程度の小さなプログラムにはないだろうが)。それはコンピュータが間違いを犯しているわけではなく、人間が間違うからバグが発生するのである。コンピュータは人間が命令したことを実行しているだけ。コンピュータが間違っていることもなくはないが、それはコンピュータ自体が間違っているのではなく、そのコンピュータを設計した人間が間違っているのである。プログラマは、プログラミングは当然として、プレゼンをしたり、ドキュメントを作成したりする機会も多い。だからプログラマにとっての論理的思考は、調理師の包丁のようなものかなと。普段から砥いでおかないと、切れ味は落ちていっちゃうように思っている。

論理力を鍛えるトレーニングブックという本を買った。前半に説明、後半に例題と解答例という形でなっているが、なかなか手強くて面白い。文章を読んで、論理的なほころびからその文章全体に反論する練習なんかがあり、考えながら読まなければ全く役に立たない本である。時間をかけてゆっくり読みたいと思っている。