今日も市街が混雑しているのは明らかなので、自宅作業にする。
で、しばらく前から1.9に導入していたlocal visibilityにバグがあったのを修正する。 local visibilityとはpublic, private, protectedと同様に、localと指定すると
というものだ。でも、メソッドキャッシュのことを忘れていたよ。
というわけで、修正した
Fri Jul 21 04:17:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
とはいえ、これだと普通の関数的メソッド呼び出しと区別がつかないので、 関数的メソッド呼び出しのコストが若干上昇することになる。 いっそ「@methodはローカル関数」のようなルールを導入した方が 実行効率からは喜ばれるだろうな。
タイミングにより挙動が非決定的(non-deterministic)になるスレッドは難しすぎる、 という話、らしい。
ではどうするかというと、適切なデザインパターンの導入により、 決定的なままで並列性を導入することはできるだろうということと、 それを支援する言語についても触れられている。
Guy SteeleのFortressもその辺を意識している(ループを暗黙的に並列実行したり)ようだ。
が、そういう言語ってのは以前からぽつぽつ出ているように思うのだが (OccamとかpSatherとか)、あまりメジャーにならないのはなぜだろう。 まだまだ経験が足りなく、こなれていないからだろうか。 将来のメニーコアを最大限に活用する並列実行環境にふさわしい言語になると思うのだが。