「理系と文系」より「帰納と演繹」

ネットでは定期的に「理系と文系」ネタが盛り上がるようだ。「理系はコミュニケーションができん」「文系は論理的な思考ができない」「それはレッテル貼りだ」の3行が毎回無限ループする。もちろん文系の学問に論理的思考が不要であるとは到底思えないわけで、むしろ着眼点として面白そうなのは、論理的思考に対するアプローチの違いだと思う。思考法には演繹法帰納法があって、この思考法で分類してみるほうが理系/文系の分類よりも面白そうに僕には思える。そして「文化」の衝突も理系/文系と同じくらい、帰納派と演繹派の間で起こっているような気がする。

ここで急に話は飛ぶのだけれど。

前職の後輩で、保険会社から転職してきた人がいた。社内では変わった経歴の持ち主だった。その彼に「保険会社ではどんな仕事をしてたの?」と聞いたことがある。

なにやら彼は保険商品のリスク計算のようなことをしていたようだ。と云われても僕には具体的なイメージは湧かないのだけれど、とにかくデータを集め、エクセルか何かに入力して色々と計算して、それを上司に提出するというようなサイクルだったらしい。その上司といえば、会社に来てのんびりと新聞を読み、ときどき居眠りをし、到底仕事をしているように見えない。関西出身の彼は「なんや、なんであんな居眠りばっかりしよるオッサンに報告せなあかんねん」と心の中で毒づきながら報告書を提出していたそうだ。

ところがいさ報告書を提出すると、上司はメンドくさそうにパラパラとページをめくったかと思うといきなり「ここの計算結果おかしいぞ」と言う。「し、失礼な。何言うてンのオッサン、俺がどんだけチェックしたと思ってんねん?」と思いつつその計算を調べると、指摘されたとおり確かに間違っていた。そんな悔しい経験が何度かあったらしい。

さもありなん、と思う。ここからは僕の予測だけれど、彼の思考法は演繹的であり、オッサンの思考法は帰納的であったのではないか。後輩はたぶん、入力したデータから計算を一つ一つ順番に確かめ、論理を積み上げていって結果を出したのだろう。一方オッサンには、たとえ今は居眠りをしていようとも、今までの仕事経験で積み上げられた膨大な経験が身体知として獲得されている。そういった経験に照らして、どうもこの計算結果は間違っていそうだという「匂い」を嗅ぎとるのだ。いわば、蓄積された経験がベイジアンフィルタとして作用しているのだと思う。

思うに、若いうちは演繹的な思考力が強く、経験を積むにつれて帰納的な思考が得意になる。

実は僕自身、思い当たるふしがある。昔と比べてデバッグの効率は明らかに上がったと思う。「あの辺に原因がありそうだな」という嗅覚が以前よりも働くようになった。後輩が「くそっ、原因が分からん!」とハマっている様子を横から眺めて、「この辺が怪しいんじゃない?」と適当なことを言うだけで当たってしまうこともある。そんな時はきっとドヤ顔(恥ずかしい・・・。

しかし、プログラマという職業は絶対「演繹派」が向いていると思うんだよね。帰納プログラマはどうも頂けない。例を挙げると、ある関数の動きを知りたい時に演繹派プログラマはソースを読むのだが、帰納プログラマは「実験」するのだ。ソースは読まずにブラックボックスのまま、とりあえず引数を色々変えながら呼んで実験をして、その実験結果から関数の仕様を類推するのである。

一見、帰納プログラマの方が要領の良いアプローチに思える。実際、瞬発力的な比較で言えば帰納派の方が仕事が早い。しかしそのアプローチではプロジェクトが早晩破綻する。効率よくバグのないソフトウェアを開発するためにはコードをキレイに保つ必要があり、コードがキレイであるということの評価軸の一つは、演繹的な論理の流れが端的にすっきりと表現されているかどうかである。そういう視点を持たない(あるいは希薄な)帰納プログラマは、デバッグや緊急対応のような瞬発力が要求される場面では活躍するかもしれないが、長期的に見ればプロジェクトにダメージを与えてしまうと思う。

視点を変えて、大学の学科や研究室による思考法の違いを見てみよう。数学科は間違いなく演繹的だ(追記:間違いのようですトホホ。コメ欄参照m(_ _)m)。数学的帰納法はあまり帰納的なアプローチには思えないし。そして数学者が輝かしい実績を残すのも若い時が多い。つまり数学者は演繹的な思考力がピークとなる若い頃に最大の成績を残すのではないか。一方、いわゆる実験系の研究室は帰納派だ。膨大な実験データを元に背後の数理モデルを組み立てていく。こういう実験系の研究室では、実験データを読み解く能力は年長者の方が得意だという印象が強い。徹夜で整理した実験データを教授に一瞥でダメ出しされて泣いた経験がある人も多いんじゃないかな。お医者さんも、経験豊富な年長の先生のほうが診断が的確なんじゃないかというイメージがあるね。

思うに、「論理的思考」という言葉は主に「演繹的思考」を指していることが多い。そして帰納派の人、つまり蓄積された経験に基づいたベイジアンフィルタを備えた人、の言うことは一見、論理を欠いているように見える。これは当然のことで、GMail のスパムフィルタの判定を見てもそこに論理を見つけることは難しい。オッサンが「俺のカンだ」と言うのと、GMail が「データから学習した結果の判定です」というのはあまり差がない。困るのは、大した学習データもインプットしてないくせに「俺のカン」を押し付けてくる御仁が時々いらっしゃることなんだろうと思う。

あなたは帰納派?演繹派?周りにいる人はどう?そう考えてみるとちょっと面白いと思うのだけれど、どうかな。

追記

「数学は演繹的」と書いたらツイッターで、数学にも帰納的な発想が必要との指摘を受けた。「帰納的な発想から予想が生まれて、それを演繹的に証明して定理になる」との意見も。なるほど!と思ったのでここに追記。
前から僕が思ってたのは、理系と一口にいっても学部学科に依って思考法のクセは結構違うよなーということ。そしてもうひとつは、非論理的に見える人、つまりカンで言っているようにしか見えない人をホントに単に「非論理的」と切って捨てていいのかな、という問題意識。さらに「勘」って実は肉体化されたベイズフィルタなんじゃね?という思いつき。この3つを絡めて書いてみたけど、うーん、読み返してみるとあまりうまく書けてないですね。考察が浅かったかな・・・。