ふにゃるんv2

もとは、http://d.hatena.ne.jp/Wacky/

SilverlightとDynamic Language Runtime(DLR)とIronPython 2.0 Alpha1

いつもチェックさせてもらっている id:akiramei さんのページで興味深い記事を。また、タイムリーな事に、先日のBlogに荒井さんからのコメントもあるし!

先日のaraiさんのコメント
...IronPython2.0アルファ1がリリースされたのはご存知かと。このバージョンは、Python2.5を目指して、.NET上の実行環境の最適化(?)のためにDynamic Language Runtime対応を目指しています。』


おぉ、面白そうですね。SilverlightとDynamic Language Runtime(DLR)。
とはいえ、Silverlight自体は、id:akiramei さんが既に解説モードに入ってらっしゃるようなので、以降 IronPythonに絡めて。

IronPython 2.0 Alpha1

IronPython 2.0 Alpha1 が出ているよ、って紹介を頂いたので、早速ダウンロード。


展開すると、何か変わっています。

まず、1.1の場合、

F:\Wacky\Test\python\IronPython\IronPython-1.1-Bin\IronPython-1.1>ls *.exe *.dll

IronMath.dll  IronPython.dll  ipy.exe  ipyw.exe

F:\Wacky\Test\python\IronPython\IronPython-1.1-Bin\IronPython-1.1>ipy
IronPython 1.1 (1.1) on .NET 2.0.50727.42
Copyright (c) Microsoft Corporation. All rights reserved.
>>>

次に、2.0A1の場合、

F:\Wacky\Test\python\IronPython\IronPython-2.0A1-Bin\IronPython-2.0A1>ls *.exe *
.dll
IronPython.Modules.dll  Microsoft.Scripting.Vestigial.dll  ipy.exe
IronPython.dll          Microsoft.Scripting.dll            ipyw.exe

F:\Wacky\Test\python\IronPython\IronPython-2.0A1-Bin\IronPython-2.0A1>ipy
IronPython console: IronPython 2.0A1 (2.0.10427.02) on .NET 2.0.50727.42
Copyright (c) Microsoft Corporation. All rights reserved.
>>>

外見的には、依存するDLLが IronPython.dllとIronMath.dll の2ファイルだけだったのに、

とIronMath.dllが無くなって、新たに3ファイル増えてます。

新たに使用されているスクリプトエンジンの可能性と将来

2.0になってから、スクリプトエンジンの中核は、どうも Microsoft.Scripting.dll っぽいです。


このエンジンが、荒井さんやid:akirameiさんのおっしゃる DLR(Dynamic Language Runtime)と関連性があるようで、別途ドキュメントまで用意されています。


このドキュメントの表題が、"Dynamic Language Runtime Microsoft.Scripting Spec"となっており、Microsoft.Scripting 名前空間に配置された各種ライブラリの説明があります。


まぁ、そこいら辺より、Overview(概要)の方が大事でして、その一節に、以下の文言があります。

''原文''
Merlin is building a Dynamic Language Runtime over the CLR (and Silverlight) so that it is very easy to port dynamic languages to .NET and get a pretty good implementation. You could do a lot of work yourself and probably do better with a hand tuned implementation of a given language, but we think we can make a great proposition to move to .NET easily via DLR. We've had a great success with IronPython and engaging the community for MS doing a shared source project, doing a great thing for Python, making .NET more attractive to folks, and releasing regularly (every 3-6 weeks) to support people using IronPython in production. IronPython runs 1.8X faster than the standard implementation. We're leveraging the learning we did on IronPython to extract elements that could be common amongst languages (dynamic type system, hosting APIs, cached method dispatch, symbol tables, ASTs, codegen, etc.), and we currently are working on IronPython 2.0, JScript, VBX, and Ruby to vet the common designs. We'll eventually do (or recruit people to do) PHP, scheme, and maybe one more to believe we really can move language+1 with ease to the DLR.

''Yahoo翻訳''
ダイナミックな言語を.NETに運んで、かなり良い実施を得ることが非常に簡単であるように、マーリンはCLR(そして、Silverlight)の上にDynamic Language Runtimeを造っています。あなたは多くの仕事自身をすることができて、多分伝えられた言葉遣いの手調整された実施でよりうまくやることができたでしょう、しかし、我々は我々がDLRを通して簡単に.NETへ移るという大きな提案をすることができると思います。我々はIronPythonでの大成功を持ちました、そして、MSのために共有をひくことが共有ソースプロジェクトをして、パイソンのために大きなことをして、.NETを人々により魅力的にして、支援者に定期的に生産においてIronPythonを使うことをリリースしました(3-6週ごと)。IronPythonは、標準的な実施より1.8X速く走ります。我々は我々が言語の間に一般的でありえた要素を引き抜くためにIronPythonの上でした学習に影響を及ぼしています(ダイナミックなタイプシステムは、APIのホストをつとめて、方法急送、シンボルテーブル、ASTs、codegen、その他をたくわえました。)、そして、我々は一般のデザインを綿密に調べるために現在IronPython 2.0、JScript、VBXとRubyに取り組んでいます。我々は、結局、我々が容易に本当にlanguage+1をDLRの方へ動かすことができると思っているために、(またはまねる人々を入れます)PHPschemeと多分もう1をするでしょう。


英語レベル0なんで、機械翻訳様のおっしゃる通りに解釈すると、以下のように読めるんですが、どうですかね?

  • 我々は、以下の言語の対応に取り組んでいる
  • 他に、以下の言語の対応も取り組む予定


この文言で、Lisperな方々が、どのように反応するかが少々気になってます。(PHPは、最近マイクロソフトとZend社が仲良いので想定範囲内)


以下、考えられる反応。

  1. 「フーン」(スルー力発揮)
  2. 「退かぬ!媚びぬ!省みぬ!」(拒絶反応)
  3. き、期待なんか してないんだからねっ」(ツンデレ)


個人的には、少しでも良いので、3.に流れて下さる事をキボン。
何でかと言うと、以下の簡単な理由から。

  1. 仕事で、Windowsの影響下から逃れるなんて無理
    (だって、便利ですから)
  2. だったら、仕事でも毎日新しい発見したい。
  3. .NETで、使い物になる異文化交流の基盤が整えられているんだから、もっと使いやすくしたい

「使い物になる」というのが重要でして。マイクロソフトがサポートしているよって一声かけるのとかけないのでは、大きな違いだと思ってます。
何故なら、会社のメイン言語でない→サポートされてない言語→遊びならOK、仕事はNG→永久に使われない→新しい血(知)が入らない→技術向上しない の袋小路だからです。


皆さんは、どうですかね?

UI(ユーザーインタフェースの進化)

ところで、そこかしこにあった、WMVファイルをダウンロードして眺めていたんですが、やっぱりユーザーインタフェースの最先端はマイクロソフトとかグーグルだよなぁ、と実感。


特に感心したのは、

  • Silverlightのビデオクリップの表示方法
    ビデオクリップをズームイン・ズームアウトしたり、複数のビデオクリップを束ねる方法
  • Visual Studioで開発中のWebサイトのカレンダーの選択、地図のポイント

ですね。


自分が知らないだけとは思うのですが、オープンソースで練られているなぁと思うユーザーインタフェースってあまり無いんですよね。
Fedora6だったかで搭載されたGUIは、使い続けたいと思うUIじゃなかったので、そう思っちゃったんでしょうね。(ウィンドウを動かす度に、スライムみたいにブルブル震えてもらってもなぁ。というのが正直な感想)