二, Visual Basic的未来—DLR
在交流中开发专家们对Visual Basic10(VBx)表现出了异乎寻常的兴趣,那么Visual Basic10将给我们带来什么新特性?Jonathan Allen认为“VBx 的关键特性包括了大家希望的在Lisp,Ruby或者Python中存在的动态代码生成功能。这将开拓一个能使用Visual Basic.NET来开发 SilverLight和Office应用程序的新时代。”
除了职业开发者外,广大的IT pro们依旧喜爱使用古老的VBA制作一些Office相关的开发来满足工作中的需要,而OS X下的Office宏程序开发目前依旧缺乏支持。VS2008发布新一代VSTO(Visual Studio Tool for Office),在对Word和Excel继续提供便捷开发的同时,着重加强了面向PowerPoint、Outlook的开发能力。但是VSTO的普及,在很大程度上限制了非开发人群的业务能力。虽然这将有效的防止Office宏炸弹,但是专家认为如果能进一步加强VBA也不失为一个解决方法。而VBA过渡脚本化和开发环境薄弱也是一个重要问题,那么因该怎样发展脚本并且解决部署问题?
在讨论VB10将带来的新特性时,DLR经常被提及。在描述Visual Basic10新特性的文章中可以看到“Visual Basic10利用了一个称为Dynamic Language Runtime(简称作DLR)的新特性。DLR是一个基于Common Language Runtime(CLR)之上的扩展,用于支持多种动态语言,并为动态语言实现提供了一个通用的对象模型。 像其他动态语言一样,DLR将允许Visual Basic10的代码被即时的编译(compile on the fly)。一旦Visual Basic10和SilverLight组合在一起,就意味着VB的源代码可以在浏览器运行的时候被下载和编译,这样可以实现很多在AJAX和其他客户端Web应用程序中运用到的类似技术。”
什么是DLR?DLR即Dynamic Language Runtime,是微软给需要动态语言的开发人员的一个回应。它基于CLR构建,是CLR的一个扩展。设计该扩展的原因是为了保证动态语言之间的互操作性,DLR上的动态语言编译成IL的字节码后,可直接在CLR上运行。
Jim Hugunin认为:“DLR所要做的是为你提供你喜欢的语言的最佳体验——对语言本身、其上优秀的工具、性能,以及和丰富的程序库集平台进行无缝整合都是一样的。DLR带来的核心优势就是共享,它使得语言实现者共享标准特性,而无须从头开始从新构建它们。这使得他们能够专注于研究语言的新特性,使一门语言变得更加独一无二,而不是在重新发明另一个GC系统上劳神费力。”同时微软将新一代的VB配合希望支持DLR的其它语言开发人员开展工作。
VB10另一个新特新特性和脚本相关,这就是REPL(Read-Eval-Print loop)。REPL是一个在动态语言中很流行的功能,在REPL环境下,代码在输入后就马上运行。但是有专家对动态语言的发展方向表示了质疑,因为这样“脱离了现代编程语言的宗旨了——尽早地指出错误”,相信这将是一个非常有趣的研究方向。在这个基础上专家认为用户会非常便捷的将脚本嵌入自己的项目中,并获得稳定和安全的支持。站在VB的角度来说,在很大程度上不是将脚本带回VB,而是同过DLR将动态语言发展壮大,这一点还请专家指正。