オブジェクト指向と関数型と私

[id:m-hiyama:20060615]からTBがきて、改めて考えをまとめる。(前の記事は、オブジェクト指向の話じゃなくってキャリアの話だったので)*1

      • -

といっても、正直に言って、私がちゃんと理解していると言えるオブジェクト指向言語は、Javaぐらいしかないので、結局はJavaの話なのですが。
最近、脳内で、JavaSchemeの差がどんどんなくなっていくのを感じるのです。はっきり言って、『Javaのオブジェクト = Schemeクロージャ』としか思えないです。
前に、このブログ内で、SmalltalkのオブジェクトとSchemeクロージャは非常に近い関係だという話がありましたが(see: [id:lethevert:20060117:p1], [id:lethevert:20060118:p2])、そこで言われていたことをJavaで実感するようになってきたということなのでしょうか。
だから、犬や猫という話をされると、頭が「?」になってしまいます。だって、Schemeクロージャのどこが猫ですか?(いや、ある意味、猫っぽいと言われれば、そうかもと思ってしまう私は猫派)
オブジェクト指向などクソの役にも立ちません!」なんていう人は、グローバル変数だけのプログラムを書いて、マルチスレッドに苦しむことが、生産性の高いプログラミングだと本当に信じてるんでしょうかねぇ?*2
ところで、オブジェクト指向の概念は、[id:sumim:20040525:p1]にきれいに整理されているので、これに準拠しておけばいいのかなとか思っているのですが、多分、私の脳内では、3つ目の考え方に近い考え方になってきているような気がします。(紹介されている論文には目を通してないのですが)
あと、脳内Scheme化が進展しているので、Scheme化できないオブジェクト指向言語を見ると、「こんなのオブジェクト指向じゃないよ!」と言いたくなる衝動に駆られて困る。

      • -

結論:『関数型オブジェクト指向のススメ』。

*1:これまでにもさんざん関連記事を書いているのですが、順番に読んでみると考えの変遷が見えて面白いですねぇ。オブジェクト指向を含む記事一覧

*2:それとも、ストイックなまでの純粋関数型信奉者?