オブジェクト指向って

オブジェクト指向ってそんなに便利かね?と思って。
Concurrent Cleanを使い始めて、関数型言語の世界からプログラミングを見るようになってから、オブジェクト指向に対する考え方がだいぶ変わってきたような気がします。
オブジェクト指向でもっともよく使う機能は、スコープの分割とモジュール化だと思うのですが(つまり、カプセル化の機能だ)、これはオブジェクト指向でなくてもできることなんですよね。むしろ、代表的なオブジェクト指向言語のもつスコープの機能は、若干物足りない気がするし。
メソッドは、こんな風に書くだけだし。コンストラクタを書くのがちょっとメンドイけど。

object->medhod(object, arg1, arg2)

オブジェクト指向じゃないとできないことって・・・? 継承くらいかな?
逆に、オブジェクト指向だと書けないことは・・・、関数ポインタですね。継承と多態を使って近いことはできますけど、全然柔軟性が違います。しかも、これが書けないと、関数型言語でよく使う強力な記述のほとんどが実現不可能になってしまうのです。だって、関数ポインタが書けないということは、擬似的にでも関数をfirst-class objectとして扱う手段がないということなんだから。
オブジェクト指向で関数ポインタが使えないということは、オブジェクトのメソッドがthis(self)ポインタを持つからなんですよね。Delphiだと、procedure of objectという型を作ってますけど、これは、Pointer型からキャストできないという厳しい制限があるせいで、残念ながら代替にはならないんですよ。Javaには、そもそも概念すらないですし。
あれこれ見ていたら、こんなサイトを見つけました。ここの議論とはまた違う話ですが。
http://www.ogis-ri.co.jp/otc/hiroba/technical/MixJuice/