Ruby らしさ

Ruby Conference 2004 での Nathaniel さんの発表も思い出してしまう。彼は発表の中で、現在の Test::Unit が「Ruby らしくない」といって批判し、より「Ruby らしく」したtest/unit2 を開発中だそうだ。そのサンプルの一部は発表の中で内で公表されていたが、クラスではなくブロックを多用する形に大きく変わっていた。これはつまり、Ruby でのプログラミングは、挙動によって多数のクラスを使い分けるようなものではなく、挙動の違いをブロックで指定できるようになる、ということかもしれない。これは OOP としては若干特殊な戦略かもしれない。

Nathaniel Talbott 氏は Smalltalker でもあるので、たぶんここでの“Ruby らしさ”は、彼を含めて一部の人間の脳内では「 Smalltalk っぽさ」に無条件置換されている可能性が高い。まぁ〜ちがいないっ。w 騙されるな! Rubyist たちよ!


とか言うとおもいっきり語弊があるのでこの日記のスタンス(一般に語られる「オブジェクト指向」は2つの異なる手法の、しかしそれぞれの考案者の意に反したキメラである!)的に言い直すと、文脈から推察するに、ここで筆者が言う“OOP としての戦略の特殊性”とは、ケイのメッセージ指向の OOP 的やりかた*1を、ストラウストラップのクラス指向の OOP*2 実践者が見たときに感じる違和感を別の言葉で言い表わしたものであると想定できそうです。こうしたことは、Eiffel 者が以前その FAQ で、無名関数(Effiel 風に言うと手続きの型)を用いることは“オブジェクト指向手法と非互換”と言い切っていた*3Java 者がクロージャは真の OOP らしくないというようなことを言うのをよく耳にすることがあるのと同じバックグラウンドかとも。


ところで Ruby らしさって、なんなんでしょうね(^_^;)。どなたか教えてください。w

*1:…のひとつ

*2:クラスを「ユーザー定義可能な型」に見立てた、型による抽象化手法のスーパーセットとしての OOP

*3:後に、この項目は、手続きの型の導入予定のアナウンスが追記され、最後には(おそらく Eiffel の仕様変更を 受けて−未確認 見越して)削除された。その変遷はこちらで確認可能。Aug 06, 1997 → Jun 19, 2001 → Nov 01, 2001