«前の日記(2006年06月23日) 最新 次の日記(2006年06月25日)» 編集

Matzにっき


2006年06月24日 [長年日記]

_ 親子活動

息子の小学校で親子活動。

中国電力から講師を招いて電気について学ぶコーナーと。 親子で体を動かすコーナーとがある。

電気のコーナーでは、静電気を使って電気を体験したり、 自転車に自動車用ダイナモとDC/ACコンバーターをつないで電化製品を動かしてみせたり してた。男の子はおおむね大喜び。

体を動かすコーナーでは一方が紙飛行機を投げ、もう一方が虫取り網でキャッチするという遊びや、紙飛行機を投げながら走るリレーなどが行われる。

結構楽しかった。

_ [OOP] Mixinと多重継承

Javassist*1の千葉先生からメールをいただく。

Ruby は動的に型づけされる言語なので、 サブタイプ関係をつくることにほとんど意味はありません(変数に型が ないわけですから)。したがってクラス継承の役目も実装を再利用する ことです。だとすると、そもそも Ruby において class の継承と module の利用の間に違いはあるのでしょうか? Module にはインスタンスを作れないなどの制約があるのは承知してい ますが、そういう制約を取り除いてしまっても、まだ違いはあるので しょうか。なんとなく、クラスをやめて全部 module にしてもい いのでは、と思ってしまいました。

それに対しての私の返答は以下の通り。

全部moduleにするとなると、

本当に全部moduleにするならば、classが存在しない以上、インス タンスを作れないという制約を取り除く必要があります。というこ とは、それは単なる多重継承でしょう。

一方、継承を取り除いてインスタンスを作るという機能だけを持つ classと、機能を集約するmoduleをもつという方式も考えられます。 それはそれで面白いと思うのですが、それだとSmalltalk以来積み 上げてきた「継承」という「考える道具」が使えなくなるので、う れしくない側面があります。Rubyは保守的な選択をしました。

*1  ところではるかな昔、DeJavaという名称は不許可だったのにJavassistはOKっていうのはSunの方針が変わったんだろうねえ。かわいそうなDeJava

_ [Ruby] 1.8.5 preview1

とうとう出す。まだ積み残した問題がいくつか残ってるんだけど。

<URL:ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-preview1.tar.gz>


«前の日記(2006年06月23日) 最新 次の日記(2006年06月25日)» 編集