PDC2008

10/27-30に開催されたPDC2008ですが、開催中にも関わらずセッション動画が随時公開されていて参加出来ない人としては嬉しい限りです。連休中はひたすらセッションを見ていたので、個人的に興味があったセッションを簡単にまとめてみます。

The Future of C# | pdc2008 | Channel 9
ヘジたんのC#セッションは、
http://d.hatena.ne.jp/akiramei/20081031/1225468947
を参照ください。

Deep Dive: Dynamic Languages in Microsoft .NET | pdc2008 | Channel 9
DLRに関するセッション。IronPythonを作成した動機なども語っていましたが、過去の日記で紹介したことがあるのでそれは割愛。

  • Ironとは? Implementation Running On .NET
    • な、なんだってー!!(AA略
  • Expression Trees v2
    • LINQとExpression Treesを共通化?
      • add assignment
      • add control-flow
      • add dynamic dispatch nodes
      • support full method bodies
  • Dynamic Dispatch
    • Common Actions Accross Languages(以下CAAL)
    • 各言語共通となるアクションを定義
      • GetMember/SetMember/DelteMember
      • UnaryOperation/BinaryOperation
      • Convert
      • InvokeMember/Invoke
      • GetIndex/SetIndex/DeleteIndex
    • 各言語のSyntax -> Expression Trees -> CAAL(DLRへメッセージ送信) -> Binder(各言語等)
    • Binder
  • Call Site Caching
    • DLRのディスパッチは文字列ベースなので遅い
    • メソッド呼び出しや定数参照などをキャッシュすることで高速化
    • MetaObjectクラスによるBinder呼び出しの最適化
    • 昔からある手法

C#のdynamicの実装がどうなるか分かりませんが、このセッションを見る限りdynamicキーワードを付けるとExpression Treesが構築され、Dispatch部分がDynamic Dispatchに置き換えられる、って感じでしょうか。

Microsoft .NET Framework: CLR Futures | pdc2008 | Channel 9
CLR4.0の強化点など。

  • In Process Side X Side
  • NoPIAs
  • Wrapping Tool
    • windows.hとSALをを読み込んでP/Invokeラッパーを生成する
      • SAL(source code annotation language)
  • IronPython/IronRuby/F#を実装するにあたってのCLRチームの貢献
  • パフォーマンス改善
    • .NET 3.5SPの強化点
      • 割愛
    • 並列処理&スレッド
      • Parallel.For / Parallel.Eachなどライブラリを用意
    • GC
      • Server GC
        • Generation 2発生時に通知を受けられる
      • Client GC
        • New Background GC
          • CLR3.5以前はGen0,Gen1とGen2が同時に実行出来なかった
          • CLR4.0ではGen2中もGen0,1が可能
          • Background GCだと待ち時間が半分程度に改善される
  • バグ削減
    • Currupting state exceptions
    • 不正な状態のプロセスはそれ以上データを壊す前に速やかに終了すべき
      • CLR4.0ではA/V Exception, Invalid Memoryなどの例外は通常の方法ではcatch出来なくなる
        • HandleProcessCorruptedStateExceptionsカスタム属性を使えば処理出来る
    • デバッグ
      • 64bit mixedモードサポート
    • Code Contracts
      • あなたはコードについて多くを知っている
      • コンパイラにそれを伝える手段は少ない
        • assert?
      • CodeContract.Requires/CodeContract.Ensures
        • 事前条件/事後条件が指定できる(Design by Contractっぽいやつ?)

CAS(Code Access Security)が無くなるとかそんな話を聞いたことがありますが、ここでは触れられていませんでした。大きな問題ですし、まだ詳細は詰まってないのかしら?

An Introduction to Microsoft F# | pdc2008 | Channel 9
F#入門セッション。

命令型->宣言型へのコードの書き方が変わっていく様子とか、命令型言語に慣れている人には参考になりそう。あと、asyncブロックとlet!を書くだけで非同期実行になるところは必見。

Microsoft .NET Framework: Overview and Applications for Babies | pdc2008 | Channel 9
.NET関連の総覧的セッション。セッションが多すぎて何を見て良いか分からない場合は、これを見て興味がありそうなものを探すのがよさげ。ジョークを交えた肩肘の張らない内容です。ただ、真剣モードで見ようとするなら、他のセッションを当たった方が良いかも。(^^;

http://channel9.msdn.com/pdc2008/PC54/
Monoな人のセッション。PDCでOpen SUSEを見るのは新鮮です(^^;

英語がかなり速いですが、デモと会場のノリだけで楽しめます。私が紹介するよりid:atsushienoさんとこ→Mono on PDC 2008 video - ものがたりを見た方が良いです。

Managed Extensibility Framework: Overview | pdc2008 | Channel 9
.NET4.0で組み込まれるMS製DIコンテナのセッション。DIコンテナの紹介的なところもあるのでDIコンテナを使っている人は物足りないかも。


疲れたのでこの辺で。(^^;

そのうち、MSな人とかMVPな人とか、詳しい人が記事にしてくれるでしょうー