私が考えるOOPL
「Java のクラスはオブジェクトじゃない?! - Smalltalkのtは小文字です」に触発されて、私なりに考えるOOPL論をば。
私は前々から、Javaに代表されるゲッターメソッドの構文っておかしいと思っている。たとえば
int foo; foo = hoge.getFuga();
なんてのは、Java等のOOPLプログラマなら当たり前のように使っている構文だ。でも、これを英文的に分解すると意味がおかしい。
The hoge gets a fuga.
hoge.getFuga()を単純に分解して英文調にしただけのものだが、明らかに意味が違う。getするのはあくまでfooのはずである(英文的には)。つまり
The foo gets the hoge's fuga.
だと思う(中坊のとき英語3だったので英文の良し悪しはつっこむな)。
手続き言語では関数は「コール」するものだが、OOPLではメソッドは「メッセージを送る」ものである。つまり、「メソッドを呼び出す」という言い方は本来おかしい。しかしながら、上記のような構文のおかしさがあるからこの言い方に違和感があるのではないだろうか。
つまり、私的新言語を作るとしたら、ゲッターは以下のようになる。
int foo; foo->get hoge's fuga;
intクラスオブジェクトfooは、オブジェクトhogeに対してgetメッセージを送る(それを表わす演算子が「->」)。「's」は演算子で属性の値を返す。
だめかな?