世界線航跡蔵

Mad web programmerのYuguiが技術ネタや日々のあれこれをお送りします。

2007年11月12日

動的言語なフレームワーク

Seasar Conference 2007 Autumnで、千葉先生は言語特性の動的と静的について話したらしい。私ゃ見に行かなかったけど、みんなその話はしてた。あと、文殊堂さんのレポートを読んだ。

曰く、

ロード時までにクラス書き換えできれば十分じゃないの?

うん。Railsはね。だから、私は思っている。みんなもっとModule#freezeを使えばいいのに。……と、リンクしようと思ったらリファレンスマニュアルに載ってないじゃん。riには載ってるけど。そりゃマイナーなわけだ。

Module#freezeするとメソッドの追加削除ができなくなる。だから、VMはfrozen classの利用を検出したらメソッド探索をインライン展開したりとかいう最適化の余地があるんじゃなかろうか。その適切なタイミングを検出させるのは難しくてもあるいは、GC.startみたいにYARV::Optimization.startというのはあり得ないだろうか。

そうしたら、サーバーサイドみたいにロード後にそれほど変わらずに長時間稼働し続けるシステムではこれを使うだろう。ま、dynamic_finder使えなくなるけど。dynamic_finderを宣言しておくと先行定義してくれるような仕組みがあれば私は使うかも。(それなんていうS2Dao)

でも、いにしえのLispの動的ぶりはこんなもんじゃなかったと聞く。稼働しているソースを動的にデバッグ & 編集したり。要は、Railsはまだまだ動的さが足りないと言うことだね。動的言語の機能を生かし切っていない。やっぱりRailsはRubyにとっては世界制覇の始まりに過ぎないのかも。

にしても、そんな夢のフレームワークが出てくるまでは、RailsはModule#freezeして、YARVは最適化してくれればいいのに。Rubyのメソッド呼び出しを_vtblにするような最適化って、あー、YARVのバイトコードを増やさないといけないのか?

いや、_vtbl言いたかっただけ。COM大好きだから。

追記

そういえばg++は、ローカルでnewしてdeleteしてるようなケースだとオブジェクトの属するクラスが具体的に判明してるので、仮想関数呼び出しもinline展開したりしてくれたよなー。実験したバージョンは忘れたけど。そういうのとModule#freezeを駆使すれば実はRubyではメソッド呼び出しを単なるgotoにできるケースってあるんでないかな。(あれ? gcc4.0だと駄目だ。何で実験したんだったか)

追記(2007-11-21)

See Also: 走り続けるプログラム by 瀧内さん

トラックバック

http://yugui.jp/articles/696/ping
[イベント][言語][Java]Seasar Conference 2007 Autumn Seasar を支えるテクノロジー (文殊堂)
東工大の准教授で、Javassist開発者の千葉 滋 先生のゲスト講演 ReflectionとMetaobject(後のAOPである)の歴史 クラスローダの話 と来て、動的言語vs静的言語の比較→落とし所を提供するGluonJというものの紹介をしていました。 静的言語vs動的言語 静的言語動的言語 Reliab

コメント

blog comments powered by Disqus

ご案内

前の記事
次の記事

タグ一覧

過去ログ

  1. 2016年07月
  2. 2016年01月
  3. 2015年09月
  4. 2015年08月
  5. 過去ログ一覧

フィード

フィードとは

その他

Powered by "rhianolethe" the blog system