«前の日記(2004-01-26) 最新 次の日記(2004-01-28)» 編集

Matzにっき


2004-01-27 [長年日記]

_ [生活]散髪

あまりにも髪が伸びていたので、ずるずると引き伸ばしてきた散髪に。 ばっさり切って、さっぱりした。でも、ちょっと寒い。

_ [言語]Traits

昨日、話題にしたtraitsだが、 論文としてのインパクトはともかく、Smalltalk言語に対するインパクトは非常に大きいことに 改めて気がついた。Smalltalkでは単純継承のために実装の共有が難しい側面がある。 もちろん、委譲を使えば良いのだろうが、やや面倒な側面がある。

Smalltalkに多重継承を取り込んだ試みも報告されているが、成功したとはとても言えないだろう。 実際に多重継承を持つ(広く使われている)Smalltalk処理系は存在しない。

しかし、このtraitsは

Both the Squeak Foundation and Cincom have expressed interest in incorporating traits into the main development stream of their Smalltalk systems.

ということで、もしかしたら本流のSmalltalkに取り込まれるかも。 これがSmalltalkにとって画期的なことではないだろうか。

同じように実装の共有に苦しんでいる(ように見受けられる)言語にJavaがある。 これも単純継承しか持たず、実装の共有に委譲を使っている。 「継承よりも委譲が良いんだ」というのはJavaプログラマがよく言う言葉だが、 Mix-inを知るものにとっては負け惜しみに聞こえる。

さて、Javaにtraitsを加えたら、どのような世界が広がるか。 その時、Javaプログラマはどう感じるか。

仕様の継承としてのinterfaceと実装の継承としてのtraitの両方を持つ言語は、 大変有望な言語になると思うのだが*1

*1  それがMixJuiceだという気もする

本日のツッコミ(全1件) [ツッコミを入れる]
_ shudo (2004-01-28 14:52)

最近、翻訳をしていて、mix-inについてのこういう文章に遭いました:<br>This (アイスクリームと一緒にアメを買えること) seemed like a good<br>metaphor to some of the object-oriented pioneers from nearby MIT who<br>were working on the fortuitously named SCOOPS programming<br>language. They appropriated the term "mix in" for classes that mixed<br>in additional capabilities. C++ includes a number of mix-in classes as<br>well. These mix-in or capability classes serve much the same role as<br>interfaces do in C#.<br><br>mix-inの由来はともかく、次の2点がひっかかりました:<br> (1)C++にmix-inクラスがある。<br> (2)そういったmix-inクラスは、C#のinterfaceと同様の役割を果たす。<br>(1)については、ここでは、多重継承を使って実装を差し込むことをmix-inと呼んでいるのかな?と想像してます。そういう流儀があるんでしょうか。<br>(2)が言わんとすることは、なかなかわかりませんでした。ようやく気づいたことは「ここでは、実装(メソッド)の付加ではなくて、役割(interfaceも可)の付加をmix-inと呼んでいる」ということです。これをmix-inと呼ぶのは、どうなんでしょう?

お名前:
E-mail:
コメント:
[]

«前の日記(2004-01-26) 最新 次の日記(2004-01-28)» 編集

track feed Matzにっき Creative Commons License This work is licensed under a Creative Commons License.