% 論理的思考の身につけ方

\documentclass{jsarticle}
\pagestyle{myheadings}
\markright{tmt's Math Page}
\renewcommand\baselinestretch{1.33}

\begin{document}

\section*{▼論理的思考の身につけ方▼}

AIの躍進が目立つようになって、論理的思考を身につける必要性が語られているようだ。そりゃあ、論理的な考え方は重要だろう。だって人間だもの。

じゃあ「論理的な考え方」ってどういうこと? 辞書などを見れば「きちんと筋道を立てて考えること」だと書かれている。そうなんだろうか。たとえば「風が吹けば桶屋が儲かる」というものがある。これは
\begin{quote}
風が吹く\quad$\to$\quad 埃(ほこり)が舞う\quad$\to$\quad 埃で目を悪くする人が増える\quad$\to$\quad 三味線弾きが増える\footnote{昔は、目の悪い人が三味線を弾く仕事をしたとされる。}\quad$\to$\quad 三味線がたくさん作られる\quad$\to$\quad たくさんの猫が捕獲される\footnote{三味線には猫の皮が使われていたとされる。}\quad$\to$\quad ネズミが増える\quad$\to$\quad ネズミが桶をかじる\quad$\to$\quad 桶が売れて桶屋が儲かる
\end{quote}
という理屈から来ている。たしかに話の筋道は通っているが、実際にそう上手くコトが運ぶものではないだろう。筋道立っていても、仮定から導かれた結論が間違いないものでない限り、とても論理的とは言えないはずだ。論理的であるためには、あやふやな点や矛盾が排除されている必要がある。

それに、論理的思考は単に身についているだけでは不十分であろう。いかに矛盾のない筋道立てた考えができても、他人に伝わらなければ活用が限られてしまう。私にとって論理的な考え方とは、
\begin{center}
\bfseries 矛盾なくきちんと筋道を立て、他人に正しく伝わる考えであること
\end{center}
である。でも、まあいいや。問題は論理的思考の身につけ方だ。

よく言われるのが、数学は論理的思考を学ぶのに大変よいということだ。最近では、プログラミングを学ぶのもよいと言われている。本当にそうか?

違うと思うね。もちろん、数学やプログラミングで論理的思考が養われる部分もあるだろうが、数学で身につくいちばんの思考は「数学的考え方」であり、プログラミングで身につくいちばんの思考は「プログラミング的考え方」である。むしろ、論理的思考をある程度身につけた上でないと、数学的思考やプログラミング的思考に馴染めない。論理的思考を身につけるために数学やプログラミングを学ぶのは、本末転倒だと思うのだ。

数学の話からしよう。数学の勉強は、定義や公式を学んで、それらの簡単な使い方から始めるだろう。多くの場合、定義の深い意味や公式の厳密な成り立ちには触れない。早い話、とりあえず暗記することが求められるので、この段階で論理的思考は育たないだろう。で、覚えたことをもとに応用問題を練習するのだが、それには定義や公式を組み合わせたりつなぎ合わせたりする必要がある。そのためには、矛盾なくきちんと筋道を立てて考えないといけない。そう、応用問題は論理的思考が身についていることが前提なのである。

数学はものごとの説明に、単にことばではなく数式や独特の論法---たとえば\textbf{背理法}や\textbf{鳩の巣原理}など---を用いて行う。このようなことは数学以外では見られない。これらは明らかに数学的考え方なのであって、論理的思考とは異なるのだ。

プログラミングはどうだろうか。プログラミングはコンピュータに命令を与えて、正しく動作するようにするものである。そこで、まずコンピュータが理解できる命令をいくつか知らないといけない。もちろん、これは覚えるものであるが、覚えなくともマニュアルやヘルプを頼りにプログラムを書くことはできる。だから、とくに論理的思考が必要なわけではない。ところで、プログラミングは命令を組み合わせたりつなぎ合わせたりするので、このとき矛盾なくきちんと筋道立てて考えないと、コンピュータは期待通りの動作をしてくれない。そう、プログラミングも論理的思考が身についていることが前提なのである。

プログラミングはコンピュータに指示するために、単に命令を列挙するだけでなくプログラミング特有の記述---たとえば\textbf{再帰}や\textbf{ポインタ}など---を用いたりする。このようなことはプログラミング言語以外では見られない(おっと、再帰は数学が本家だったね)。これらは明らかにプログラミング的考え方なのであって、論理的思考とは異なるのだ。

なんてこった! じゃあ、論理的思考はいつどこで身につけるのか。それは「読み・書き・話し」を通じてだ。文章、とくに長い文章は筋道を組み立てながら読まないと正しく理解できないものだ。書くことや話すことは他人に理解してもらう必要がある。それには、筋道立てた内容で伝えないと正しく理解してもらえない。これらは、子どもの頃から繰り返し体験することでしっかり身につくものなのだ。

もし、数学やプログラミングを勉強しても一向に論理的思考が高まらないなら、数学やプログラミングはやめることだ。数学やプログラミングは論理的思考を養うためにすることではないからである。論理的思考が身についていないのは、子どもの頃からの積み重ねがなかったのだ。しかし、いまからでも遅くない。読み・書き・話しを徹底して鍛えよう。論理的思考が身につくはずだから。数学やプログラミングはその後でやればよい。そのとき、いまさら遅いと感じていなければ、だけど。

\end{document}