TechEd2007で「動的言語」の説明を行います

TechEd Yokohamaで「T3-301 .NETにおける動的言語への取り組み」を担当しています。参加者の方達からご要望が多かったようで「Aルーム」に決定したとの情報が公開されています。

現在、その準備を行っているわけですが、その内容をどうしようかと色々と考えている最中です。基本的な論点は、MD3で取り上げているのですが、資料の締め切り的にIronRubyの詳細まで取り組むことは難しいと思っています。そこで今回の中心になるものを何にしようかと考えていまして、言語依存のASTとDLRのASTの関係をお見せしてはどうかとも思ったりしています。ASTという話になるとインサイド的な内容になっていくので、レベル300(アドバンス)でどうなんだろう? と考えたりもしています。

IronPython2.0A2の内部的な動作として、以下のような動きをしています。

  • Pythonとしての抽象構文木(AST)を作成
  • 実行時にこのASTをDLR用のASTへマップ
  • DLR用のASTからCILを生成して実行

 DLRがCILを作るときの方法論として「DynamicSite」が利用されています。DynamicSiteは関数やメソッドなどの呼び出しをキャッシュするメカニズムを備えています。このために繰り返し呼び出したりするときの実行速度を向上させる効果があります。どうもこのキャッシュメカニズムは、動的言語実装者の経験や色々な実験から導き出した方法論のようです。

またIronPython1.0から行われていた引数の数による関数やメソッド呼び出しのチューニングもDLRのソースコードに残っています。このように様々なチューニングメカニズムを採用することで、パフォーマンスの向上を狙っているようです。

PS.このBlogで動的言語関係を読まれている方には、ネタバレしそうなので困っているのが本音なのですが。また上記のような説明を行おうとすると、デモが地味になるので「Aルーム」だしなーと思ったりしています。まっ、Inside や Under Food的な内容を計画しているので、デモは地味になるのが当たり前と割り切っていたりもしますけど...