ratio - rational - irrational

« Seasar Conference 2007 Autumn (1) | Main | The First Language Java »

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 瀧内さん



トラックバック

この記事のトラックバックpingのURL:
http://idm.s9.xrea.com/blog/mt-tb.cgi/694

Ping元:[イベント][言語][Java]Seasar Conference 2007 Autumn Seasar を支えるテクノロジー

概要:
東工大の准教授で、Javassist開発者の千葉 滋 先生のゲスト講演 ReflectionとMetaobject(後のAOPである)の歴史 クラスローダの話 と来て、動的言語vs静的言語の比較→落とし所を提供するGluonJというものの紹介をしていました。 静的言語vs動的言語 静的言語動的言語 Reliab
Weblog:
文殊堂
日時:
2007年11月12日 23:33

コメント

新しくコメントをつける

よくわからない理由により、コメントが即座には反映されないかもしれませんか゛、ボタンを押して元の画面に戻ってきたならたぶん正しく送信されています。




blog操作

検索


カテゴリー

このブログについて

あわせて読みたい

follow yugui at http://twitter.com
© 2007 Yugui

Powered by Movable Type 3.2-ja-2