RHGの逆襲第3回

新橋ミラクリナックスにて。主催のYuguiさんお疲れさまでした。会場を提供下さったミラクリナックス社、よしおかさんありがとうございました。

今回はRHGの第4章「モジュールとクラス」のところ。主に特異クラスの構造がどうなってて、なんのためにこうなってるのか、というのがホットな話題でした。

1.8から1.9で変化している大きな所は

  1. 特異クラスの特異クラスを取ろうとすると、強制的に Class にすりかわるようになってた

あれ、これだけだったっけ? なんか他にもあったような気がしますケド。

あと特異クラスの klass が最初の状態では自己参照していると RHG には書いてあるけど、1.8 でも 1.9 でもそうじゃないよっていうのはやっぱりそうだったらしい。あそこが一番混乱したところだった。

他にトピックは

  1. Class を継承したクラスは class ... end の構文では書けないけど、Class.new(Class)ならできてしまう
  2. そういえば Module の継承はできる。include できない Module の一群とかができる(が意味あるのか?)

特異クラスの特異クラスの仕様変更は、やっぱりちょっとなぜそうなったのかいまひとつのみこめない。エラーにしてもいいんじゃないかという説もありましたが、普通のオブジェクトやクラスとの対称性で考えると、どんどんchainが増えていく1.8の仕様のほうがよいような気もしますね。

次回は第5章「ガベージコレクト」。これはあんまり変わってないのではないかと。マーク起点としてのスレッドのスタックのさがしかたが違うかもしれない。今度みておこう。

(追記) 実はメソッドの追加のあたりの実装をちゃんと(予習でも、当日も)読んでないんだよなぁ。今回はもうちょっと時間を延ばせたら一応ソースも読めればよかったと思う。まあ概要がわかっていればソース読みは一人でもできるから復習すればいいのですけどね。