息子の小学校で親子活動。
中国電力から講師を招いて電気について学ぶコーナーと。 親子で体を動かすコーナーとがある。
電気のコーナーでは、静電気を使って電気を体験したり、 自転車に自動車用ダイナモとDC/ACコンバーターをつないで電化製品を動かしてみせたり してた。男の子はおおむね大喜び。
体を動かすコーナーでは一方が紙飛行機を投げ、もう一方が虫取り網でキャッチするという遊びや、紙飛行機を投げながら走るリレーなどが行われる。
結構楽しかった。
Javassist*1の千葉先生からメールをいただく。
Ruby は動的に型づけされる言語なので、 サブタイプ関係をつくることにほとんど意味はありません(変数に型が ないわけですから)。したがってクラス継承の役目も実装を再利用する ことです。だとすると、そもそも Ruby において class の継承と module の利用の間に違いはあるのでしょうか? Module にはインスタンスを作れないなどの制約があるのは承知してい ますが、そういう制約を取り除いてしまっても、まだ違いはあるので しょうか。なんとなく、クラスをやめて全部 module にしてもい いのでは、と思ってしまいました。
それに対しての私の返答は以下の通り。
全部moduleにするとなると、
本当に全部moduleにするならば、classが存在しない以上、インス タンスを作れないという制約を取り除く必要があります。というこ とは、それは単なる多重継承でしょう。
一方、継承を取り除いてインスタンスを作るという機能だけを持つ classと、機能を集約するmoduleをもつという方式も考えられます。 それはそれで面白いと思うのですが、それだとSmalltalk以来積み 上げてきた「継承」という「考える道具」が使えなくなるので、う れしくない側面があります。Rubyは保守的な選択をしました。
*1 ところではるかな昔、DeJavaという名称は不許可だったのにJavassistはOKっていうのはSunの方針が変わったんだろうねえ。かわいそうなDeJava
とうとう出す。まだ積み残した問題がいくつか残ってるんだけど。
<URL:ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-preview1.tar.gz>