📚

「困難は分割せよ」って結局どういう意味?勝手に解釈してみる

2023/04/30に公開

「困難は分割せよ」とは

フランスの哲学者ルネ・デカルトが著書『方法序説』の中で述べた言葉。問題解決の格言として広く知られている。

疑問

「不可能は分割せよ」ではない

デカルトが控えめなのは、「解決不可能な問題でも分割することで解けるようになる」とまでは主張していないところである。分割しなくても解ける問題が「分割せよ」の対象なのだろう。しかし、そうであればなぜそのままでも解決できる問題をわざわざ分割するのか、また、どんなときに分割が必要でどのレベルまで分割すればよいのか(途中で分割をやめても解決可能には変わりない)という疑問が生まれる。

コンピュータは分割しない

デカルトの時代にはなかったが、現代にはコンピュータがある。プログラミングをする時、一つの関数にすべての処理を書くよりも、ひとまとまりの処理を関数として切り出したり、特定の振る舞いをする単位をクラスとして定義したりすることで、プログラムを分割するとよいとされる。しかし、そのプログラムがひとたびコンパイルされて機械語になってしまえば分割もなにもない。それでもコンピュータは困らない。プログラマとコンピュータの間にあるこの違いは何なのだろうか。

疑問をふまえた解釈

上記の疑問をふまえると、おそらく「困難は分割せよ」とは「問題が複雑すぎて対処しきれないときは、自分が対処できるレベルの複雑さまで分割せよ」なのではないかと思った。

つまり、ここでいう困難とは「解決可能だが複雑すぎて手に負えない」問題のことを指していて、それゆえに手に負える範囲まで分割しないとそれは実質的に解決不可能なのだ。

また、コンピュータは人間と比べて扱える複雑さのレベルが高いので、人間が必要とするほど分割しなくても困らないといえる。分割のゴールとは「自分が扱えるレベルの複雑さ」ということになる。

ポジティブな解釈

もう少しポジティブに言い換えてみると、「対処できるレベルの複雑さの問題を組み合わせると、そのままではとても扱えないような複雑さの高い問題も扱えるようになる」ということになる。

教訓

「困難は分割せよ」の主張を勝手に解釈したことで以下の教訓が得られた。

  • 理屈上解決可能な問題でも、複雑さが過ぎると実質的に解決不可能になる
  • 問題が複雑すぎて対処しきれないときは、自分が対処できるレベルの複雑さまで分割すると良い
  • 対処できるレベルの複雑さの問題を組み合わせると、そのままではとても扱えないような複雑さの高い問題も扱えるようになる

Discussion