雑談回です。
僕の知っている中で最もロジックを使い、ロジカルシンキングを必要とする学問は数学、哲学、プログラミングだと思っています。
ですが、自分の知る限りこの3つはロジカルシンキングでも異なるマインドセットが学問の中にあるように感じます。
それを今回は紹介できたらなと思ってこの記事を書いています。
*あくまで自分は大学の学部で勉強している程度で、 哲学に至ってはクラスを1つ取ったレベルなので、あくまで初学者の感想だと思ってください。
数学
数学(特に証明)で大切にしているマインドセットは、"正しいものから初めて、正しい手続きを行って得たものは正しい"といったものです。
最初の正しいとは大体の場合は与えられた情報や、自分が正しいと仮定したものならオッケー
正しい手続きは既に証明された定理や式変形ですが、補助線などもそれに当たります。
ちなみに補助線はを数学的に正しくするために、ユークリッドはpostulate(公準?公理?)(要は問答無用で正しいとしているもの)を作っているのですが、それはとても「え、当たり前じゃん」の世界です。
1、ある1点から別の1点まで線を引くことができる
2、直線は延長することができる
などなど...
これは僕個人の経験ですが、教授に自分の答案を見せると絶対に上から読んでいきます。それは最初のところが合っていて、そこからの手続きが正しいことを確認しているのだと思います。
哲学
哲学のマインドセットは"正しいものを仮定して、それに矛盾が起こる判例がないかを考えて、なければ正しい"といったものです。
具体例としてデカルトの話をあげたいと思います。
デカルトは世界で本当に確かなことは何かを探していた時に、感覚と数学を思いつきました。(本当はもう少しあったかも)
ですが、感覚は見え方や捉え方などで変わるため(トリックアートがわかりやすいかな)絶対に正しいとは言えない。数学では人が計算している時に間違いを起こすかもしれないため絶対に正しいとっは言えない。
そのようにして仮説をたてては判例を考えてを繰り返して、最後に有名な「我思うゆえに、我あり」(何が正しいかを考えている時点で考えている私は存在しているはず)を思いついたと言われています。
プログラミング
プログラミングのマインドセットは"全体を構成する個々の要素が正しければ全体も正しい"につきます。
プログラミングの正しい=エラーが起こらず思い通りに動いていることです。
(OOPの場合以外はわかりませんが)正しさを保証するときは大量のコードをそれぞれクラスやメソッドに分けて、それぞれを個別にテストしていきます。なぜならその方がエラーを起こしたとき直しやすいからです。
プログラミングではエラーが起こると、エラーのか箇所から関連する順番で間違っている場所を探して直していきます。
そうやって正しさを保証していきます。
最後に
3つは確かにそれぞれのメインの考え方ですが、完全に分ける必要はないと思っています。
数学に判例という概念もありますし
哲学でも論理学があります。
プログラミングでもあえて極端な値を入れてテストすることもあります。