週間日記 #10

今週は“論理的思考の放棄”について考えてみました。

 

 

“論理的思考の放棄”の自分なりの解釈

論理的思考の放棄という一部で有名な言葉がある。天才プログラマーと称される登さんが書かれたブログのタイトルだ。(登さんの天才っぷりは↓のTogetterで)

正直何を言ってるのか全くわかんなくて最初は共感できなかったのだが、色々とコメントを眺めているうちに確かにそうかもしれないと思い始めたので、自分なりの解釈をまとめてみる。

togetter.com

 

 

登さんによれば、例えプログラミングのような論理的な思考が必要とされている対象においても感覚的な思考を行うことで、効率よく作業ができるという。この手法を“論理的思考の放棄”と呼んでいる。

 

ここでは自分の経験を基にして、数学を例に考えてみたい。

高校数学で平方完成という計算を習う。平方完成を行うことで、2次関数のグラフが書きやすくなるからだ。ただ、平方完成は計算が煩雑になりやすく、途中式をいっぱい書いて計算するイメージがある。学生時代、これを簡略化して解きたいと思い、自分なりの手法を編み出した。


f:id:soitan:20210327125951j:image

平方完成は、2次関数に対して、y=a(x+b)^2+cの形に変形する問題である。大事なのは(a, b, c)がわかればよい。図では、y=2x^2+8x+1という式を途中式なしでy=2(x+2)^2-7と導いている。ここではわかりやすいように(a, b, c)を赤青緑で囲っている。

やり方は単純だ。まず2を赤で囲む。次に8を2(赤)で割り、その数字を半分にして2(青)を得る。最後に、赤*青^2を計算して、1から引き算すると-7(緑)を得る。問題文の式に数字をメモ書きしているだけだから、赤青緑を左から当てはめるように順番に書いていけば平方完成の完成である。

 

反論があるかもしれない。これはy=ax^2+2abx+ab^2+cを対応付けしているだけで論理的思考をしているじゃないか、と。

確かにその通りである。けれども重要なのはそこではない。問題文から(2, 8, 1)を読み取ったら「こういう操作をすることで」(2, 2, -7)を得ることができるという手法である。

言い換えれば、モデルを先に作っておけば、(2, 8, 1)を入力として与えると勝手に(2, 2, -7)が出力されるということである。ここにおいて論理的思考は存在しない。感覚的な作業である。

 

“論理的思考の放棄”とは、論理的な作業を予め圧縮しておけば、あとは感覚的な作業だけでどうにかなるという話のようである。

 

登さんが天才的なのは、プログラミング設計のような複数のモデル化が必要そうな問題においても同様の手法を使い、複数のモデルを頭の中で同時に立ち上げ、それを真っ直ぐに実行できるところである。これは天才としか表現しようのない凄みがある。

 

 

実践を考えてみたい。

“論理的思考の放棄”をするためには以下の2つが必要だと個人的には思う。

①モデル化

②作業の練習

 

①モデル化は、複雑で論理的な話をふわっと抽象的なものに落とし込むことである。平方完成の例でいえば、y=a(x+b)^2+cという難しい式を、順序立てた計算として捉え直そうという試みである。実社会はそもそも式が不明なことばかりなので、それはそれでまた大変ではあるのだが……

②作業の練習は、反復練習である。平方完成の例でいえば、暗算が遅いと結局遅いという話である。赤*青^2の計算は通常青が分数であることが多いので、分数の二乗の計算が大変である。これは分数の計算を反復練習して早くならないと、どうにもならない部分である。

 

上記のように捉え直すと、“論理的思考の放棄”が意外とできそうな気がしてくる。闇雲な練習は非効率なので、モデル化(ここでは妄想とかイメージが適切かもしれない)を先に行い、それに合わせた作業を反復練習することがミソなのかな……という気がした。