Tech Days 2009 の準備に追われています

只今、Tech Days 2009の準備に追われています。今回は、T3-403 Dynamic Language Runtime と T3-310 F#入門を担当しています。

F#に関しては、.NET対応の関数型言語ということでご存じの方もいらしゃると思います。私自身は、関数型に精通しているわけでもないのですが、手続き(命令)型に慣れていると関数型の考え方が理解しにくいかも知れません。何と言っても、Immutableという特徴がありますし、この意味に置いては変数という表現方法が無いと言っても過言ではないと思います。つまり状態(値)を保持する値(領域)に対する操作(たとえば、加算、減算など)が無いということです。四則演算した結果を新しい値(領域)として作成するという特徴を持っています。もちろん値を書き換えるために、mutableな変数も作成できるのですが。もちろん、これだけではなく、何と言ってもExpression(式)を定義できるところに特徴があります。式の中には、演算式、ラムダ式などが含まれています。
F#を知るための情報源を以下に記載します。
F# Developer Center
F# サンプル(MSDN コードギャラリ)
F# サンプル(コミュニティベース)

現在試せる2008 Sep CTPである1.9.6.2に合わせて文法などを見るにはコードギャラリのサンプルのサンプル101が便利です。それから、Parallele Extentions 2008 Jun CTPにもF#のサンプルでRaytracerが含まれています。このサンプルは、1.9.6.2よりも前のバージョンで作成されたものです。このサンプルを1.9.6.2に移植するには、以下の手順で操作をします。

  1. Visual Stduio 2008でF#の新しいアプリケーションを作成します。
  2. ソリューションエクスプローラーで、program.fsを削除します。
  3. サンプルのraytracer.fsを追加します(追加する順番が重要です)。
  4. サンプルのharness.fsを追加します(追加する順番が重要です)。
  5. ソリューションエクスプローラで、Parallele Extensionsで提供されるSystem.Threading.dllへの参照を追加します。
  6. System.Drawing.dllとSystem.Windows.Forms.dllへの参照を追加します。
  7. プロジェクトのプロパティでWindows アプリに設定します。
  8. harness.fs の do startStopButton.Click.Addメソッド呼び出し内の「renderTask <- Task.Create(renderLoop, taskManager )」を「renderTask <- Task.Create( (fun o -> renderLoop o ) , taskManager, TaskCreationOptions.None )」に修正します。
  9. ビルドします。

もし、raytaracer.fsとharness.fsの追加順番を間違えたら、プロジェクトファイルをテキストエディタで開いて、定義している順番を訂正してください。ビルド順序が、raytracer.fs、harness.fsになっている必要があるからです。

DLR に関しては、昨年に0.9というIronPython 2.0に同期したバージョンが公開されています。そして、ドキュメント類も一緒に公開されています。このバージョンのホスティングモデルもIronPython 2.0 ベータ5と同じになっています。このため以前から作成していた、簡単な言語を作るシリーズのサンプルもベータ5に対応したものが、そのままで動作しています。PDCで公開されたVisual Studio 2010CTPにおけるDLR対応を確認するには、IronPython v2 VS10 CTPが必要になります。 この組み合わせで、C#に追加されたdynamicキーワード使った場合に、C#ようのBinderが使われていることを確認しています。