2008年11月2日日曜日

受け入れる

例えば繰り返しについて考えてみよう。
intであろうと、floatであろうと、
for( i = 0 ; i <10 ; i++ )
{
    m[ i ] = rand( i ) ;
}
は(mについて)同じ結果になる。
しかしオブジェクト指向で実装する場合、integerとfloatは別クラスであるため、両方とも繰り返し構造が必要になる。とすれば、1つの繰り返し処理で両方処理できるのではないか?できる、したい、する、となる。でもそれにmix-inを使わなければならないのだろうか。もし進化の木が一本の根につながるのであれば、さらに掘り下げればビッグバンを越えてインフレーションまで1つの川を遡るのであれば、むしろ、どこかの段階で繰り返しメソッドが入るべきではないかと思う。

しかしコンピューティング上のオブジェクトは、あくまで便宜上のものであり、生物や宇宙の進化を表しているわけではない。うまく利用することこそが重要視されて驚けない。しかも数学的な問題となれば、なおさら物質的な問題そのものとは違ってくるだろう。

「なるほど。」

ということは、特に数学的な特徴を活かした機能に関しては、オブジェクトの木とは違う場所にあって然るべきなのかもしれない。長年理解できなかった答えとは、こういうことじゃないか? それが概念交換機へと繋がる源流なのかも。

rubyのモジュールの実際のコードや使われ方もまだ見ていないけど、名前はともかく、本来のオブジェクトとは別にしてmix-inして取り込むというのは、実は非常に合理的な考えなような気がしてきた。考えが一転してしまった。

本当はモジュールのようなやり方に納得できない病が発生しそうだったので、前に言ったように考え方に合意せず、受け入れようという主旨で書き始めたのに、30秒程冒頭部分のことを考えてたら、こんなエントリになってしまった。

まてよ? だとしたら、宇宙はどこから数学をmix-inしたんだろう。

0 件のコメント: