数学は深く論理的に考える力を伸ばすためのツールであり道具である。
数学を役立てるために学ぶというよりは論理的思考を養うための材料となる
学問である。
その方法として3つの証明方法を学んだ。
・仮定法
・演繹法
・帰納法
である。そのうちで演繹法は順序に従って証明はしているが
考えた過程は実は逆であって考えた過程(順序)とは
全く逆の順序で証明(説明)しているので読み手は非常にわかりずらく
なるのである。
なぜそんな順序で考えついたのかということが理解できない。
したがって解答を読んでもまるでクイズのようで
思いつかなければ解けない。
つまり数学の問題を解くには何等かの思いつきによって
解くものだと思い込んでしまう。
そうなるとこの手の人は数学だけでなくすべての
問題に対処すると
「これかな?これかな?」
とあたり一面あてすっぽうで考えるようになり
数学の問題を解くのもプログラムのバグを探すのも
すべてあてすっぽうでしか考えることができない。
あなたの身の回りにもこのような考え方をする人が
するかもしれない。
それはあなたでないことを願うばかりである。
このようなタイプの人はプログラマーには全く不向きであり
IT業界にも適していない。
それではどのような思考方法をとればよいのだろうか?
演繹法は思考の流れとは逆の方向で証明していると
説明した。
逆に言えば演繹法での証明文を逆に読んでいけば
思考の流れを知ることができる。
もし解答を見ることができたなら解答を逆から読むように
して欲しい。
すると最後の答えを導くための条件が見えてくる。
次にその条件が真となるための条件がいくつか見えてくる。
こうしん遡っていって最初の条件にたどり着いたとすると
問題は解けたことになる。
中学の図形問題でここに補助線を引くと…と教師は
説明したはずだがなぜそこに補助線が必要なのかを
説明していない。
したがって生徒は理解できないし次の問題では
どこかに補助線をあてすっぽうで引くという発想しかできない。
もし証明するための理由から遡ってだからここに補助線が
必要となると先生が説明してみせたら
生徒諸君は大いに感嘆して次もそう考えて
正しい位置に補助線を引くという思考ができるはずである。
つまりこの先生は解答は教えても思考方法は教えていない。
だから論理思考は育たないのである。
プログラムの解析も同じである。
結果として予測できないエラーはバグが出た場合に
そのプログラムの始めから読んでプログラム全体を理解しようとする
人がいるがそれでは莫大な時間を要しても原因を突き止めることは
できない。
正しくない印刷などの結果が出たらそれを出力している場所は
どこか、場所がわかればその演算はどこかと逆から辿っていくことが
演繹法で書かれた解答を逆から読むのと同じことである。
あるSEが開発したプログラムのバグをそのプログラムを初めて見た
私が5分でその原因を突き止めたことがあるが
これも逆から辿っていけばおのずと原因にたどり着く結果である。
もし自分の答案が間違ったとしたらXを食らった問題こそ
なぜ間違ったのか?
その解答をなぜ自分が考えれなかったのかを
繰返し正解の解答を見ながら自分の思考を反省して
深めることである。
数学とは深く考える癖をつけるための学問である。
デバッグも自分が予想できなかった原因であれば
なぜ自分ができなかったのかを論理的に突き止めていって
論理思考力を高めることが肝要である。
Xになった答えこそ徹底的に考える
ことによって次の論理思考を
養う。あなたが成長するのは○の数ではなくXをいかに自分で
克服することである。
失敗は成功の母というが失敗することが母になるのではない。
そこから考えることが次の成功を生むという諺なのである。