トップダウンとボトムアップ

Paulはボトムアップが良いと言っているが、それはちょっと賛同できない。
完全なボトムアップならば、その場で動く物をどんどん作って、それを組み上げていったら、いつのまにか実用品が出来ている、というような行程になる。
たしかにこれは、最も自然な方法である。Paulが例に出しているように、数学の公理系はそのように組み上げられる。物理でも同様だし、生物の進化する過程もそうだ。
しかし、この方法では完成品がどうなるか全く分からない。1つのものが出来る背景で、他の余分なものが作られる。もちろん、それらも有用だが、目的があって、過去の実績がない場合は非常に時間がかかる。


ボトムアップは、実績を積み上げて、それを活かしていく手法だ。わたしはまだ実績がないので、それができない。
目的がある場合は、必然的にトップダウンにならざるを得ない。


完全なトップダウンであれば、目的が最初に提示され、全てが完成するまでテストをすることはできない。最終的に出来上がるものも、目的以上のものにはならない。
これもまた、結構な問題がある。完成までには時間がかかるので、作っている途中で目標が陳腐化してしまうことがある。それに気が付くと、目標を決め直しだ。作り始めてから仕様は段々変化して、なかなか進めることができない。複数人数で作る場合、目標を度々変えられると、実際に作っている方はうんざりしてしまう。
目標が定まっていないと、最短ルートをとっても意味がないのだ。他の道を開拓しない分、路線を引き直すのは難しい。

どちらがいいというわけじゃなくて

そうなると、結局はその中間に落ち着くことになる。
基準は目標だ。目標が全くないのなら、ボトムアップがいい。逆に、目標がこれ以上変わらないならトップダウンがいい。
しかし、普通はそのように割り切れることは少ない。
大まかな目標があって、それを実現する過程で、もっといい方法を取り入れたりしたい。
だったら、そのように作ればよい。大体こんな感じ、と形をつくって、後から足したり引いたりするのだ。


……絵を描くのと同じじゃないか。