微软推出DLR, Silverlight,和IronRuby了

MiX07上宣布的。DLR = Dynamic Language Runtime。DLR和 IronPython全部开源,可以到 codeplex下载。有了DLR,在.NET上开发动态语言的工作可以简化许多。目前DLR支持Python, Ruby, JavaScript,和VB,只能在Silverlight下运行。不过把支持面扩展到普通CLR运行时应该只是时间问题。微软的CLR已是牛B的运行时,有一流的GC,高效的JIT,完整的类型系统,和相对强健的安全机制。DLR在CLR的基础上又加入对动态类型的支持。在DLR上开发的动态语言可以共享这些基础功能。这非常重要。光开发高质量的GC和JIT就需要好几代程序员和计算机科学家忘我工作,而现在牛人们不用再为这些基础设施耗费额外的精力,可以专注于语言的设计。DLR上的动态语言编译成IL的字节码后,可直接在CLR上运行。在俺看来,这才是真正的杀手卖点:动态语言们能够共享.NET庞大的类库。Ruby+LINQ,多爽啊!一门语言光有炫目的功能是不够的。语言背后的平台本就是语言的一部分。功能完善、运行稳定的一整套类库向来是做大型系统开发的老大们考虑的重点。而流行类库背后是一大票程序员。有了数量,才有质量。有共同的类库分享,才有很多人一起分享心得。人多了,社区才热闹,遇到问题才有人帮忙解决。才有公司向这门语言大笔投注。不然的话,天下功能强大的语言千千万,替它们布道的牛人万万千,说到开发大型商业程序的系统语言,还不就是C++, Java,和C#? 不要用Paul Graham的Viaweb,Orbiz的问价系统,或者Naughty Dog的游戏来说事。这些本就是小撮牛人们的特例。比如Naughty Dog:不错,他们的竞争优势之一是使用用CommonLisp,能快速开发出复杂而流畅的游戏。问题是,Naughty Dog为了用好Common Lisp,开发了自己的编译器,自己的Profiler, 自己的框架。有几个老大有这个本事?Ruby最受人批评的地方之一便是它的类库有限,而当年Perl流行很大程度上归功CPAN。现下流行的reddit.com本来用Common Lisp写成,但因为Common Lisp没有一套统一可移植的类库,reddit.com的创始人最终选择用Python重写reddit。这还让CL社区的老大们JJWW了好一阵子,好像不幸当了运输大队长的留学男。对了,我说了DLR同时支持Mac了么?嘿嘿。Mac的底层是BSD Unix。把DLR移植到其它平台也许相对容易(我不清楚Mac的底层,纯猜测。老大们尽管拍砖)。Mono社区的积极分子应该开始忙活儿了吧?

现在DLR和微软发布的Silverlight(以前叫做WPF/E)捆绑。其实俺对某个RIA平台兴趣不大。从个人的角度看,什么平台不重要。开发RIA的能力和平台无关。我就不信Dojo的Alex Russell转向开发Apollo或者Silverlight,能比那些只懂JavaScript或C#的老大们上手慢、成就小。不过既然这三架马车(DLR, Silverlight, 和IronRuby)是今天Mix07的重头戏,还是提一下。Silverlight捆绑了一坨迷你CLR,4M大,支持多语言开发。不同的程序员可选用自己的中意的语言开发RIA应用。有的公司用VB.NET,有的用IronPython,有的用Perl。这种自由度对提高公司的生产效率很有帮助。软件用户本来就不关心平台问题。程序员关心。一个平台的价值和用它开发的程序员数量成正比。支持多语言,自然能吸引更多的程序员。字节码级别的共享,又能让玩儿不同语言的老大们共享代码。其实多年前IE就支持多种脚本语言,只不过那时浏览器还没有成熟到运行普通脚本语言的程度,而且当时没有完善的沙盒环境,安全问题是需要考量。另外据说单用Flash那套环境还做不出Silverlight提供的演示效果。Expression+Silverlight提供了整合好了的全套开发工具,让RIA应用的设计人和程序员能在同一套代码上工作,并部署到多个平台上。对公司来说,应该是诱人的卖点。运行速度也许也是一个卖点:CLR是锤炼多年的一流虚拟机,在上面运行程序的速度比浏览器下的JavaScript解释器高了去了。至于让很多老大high得不行的流媒体支持,属于不知那天就消失的技术细节(对俺个人来说)。有兴趣地可以到微软网站去查看。

至于IronRuby。据说它还不能完全支持Rails。估计很多人就对它暂时没有兴趣了。Rails疯狂使用Ruby metaprogramming的技巧,正好可以用来检测各类Ruby衍生物对Ruby的支持程度。

老牌写手Jon Udell照例有篇高质量的总结--他采访了RubyCLR背后黑手John Lam后写的。里面提到了Avi Bryant用SqueakSeaside搭建的RIA应用,DabbleDB。DabbleDB绝对让人惊叹。用户可以直接对Dabble的数据做各种复杂的操作,包括更新和关联schema。而这一切都不需要重启数据库。所有数据都是“活”的--直接体现了Smalltak推崇的Always Alive原则。Jon总结尤其安逸:动态语言能让程序员更有效率。但当我们正确地运用动态语言,我们可以搭建出让每个人都更有效率的软件,像程序员一样享受动态语言的好处。

P.S., 如果Sun感受到压力,对我们Java程序员也是好事。雇用一票Ruby程序员,最后只为改进NetBeans对Ruby的支持,还是小气了点。其实不在JVM里加入大家火爆争论的invokeDynamic指令也无所谓,至少在Java里加入Closure吧。Closure就是,一旦用上了,就忘不了那强烈的生理心理双重快感啊。

你可能感兴趣的:(Ruby,vb,Rails,silverlight,lisp)