.NET和Java将有更好的动态语言支持(翻译)

来源:互联网 发布:当红网络女主播冯提莫 编辑:程序博客网 时间:2024/04/26 10:55

 

.NET和Java将有更好的动态语言支持(翻译)

8/10/2006 8:07:41 AM, 作者:Ryan Paul

 

象Python和Ruby一类的动态语言,有着表达能力强大的语法,更易于读、写和维护,对快速开发极具建设性。微软(Microsoft)和升阳(Sun Microsystems)已经认识到业界不断增长的对于动态编程的兴趣,计划将更多有关动态语言的特性集成到各自的托管平台上。

微软开发人员Jim Hugunin透露雷蒙德(微软所在地区)的WA软件公司正在增强.NET平台,以简化动态语言的开发。Hugunin是IronPython —— 一个.NET平台上的Python实现的开发者,他说.NET通用语言运行库(Common Language Runtime)将被扩展以加入对于动态语言特性的附加支持,同时也会增加供语言创建者使用的框架组件。微软希望新的特性和现存的IronPython源代码(作为一种参考实现)能够鼓励开发人员将其他流行的动态语言带到.NET平台上。目前几种有用的动态语言特性已被加入.NET 2.0中,其中较突出的是轻量代码生成和DynamicMethod方法。

       Hugunin对PowerShell(微软的下一代命令行架构)带来的机会也很热心。PowerShell在.NET技术之上提供了一个精炼的动态语言,具有顶级的功能以及其他令人期待的特性。PowerShell还提供了对于简化通常计算任务的代码库及实用程序的广泛选择。Hugunin希望在Visual Basic和IronPython中能够使用绝大多数这类功能,为用户提供更多的选择。

       在我的PowerShell简介(那时叫Microsoft Command Shell微软命令行外壳)里,我指出在语法中缺少对类的定义(defining classes)的支持是对该语言最严重的限制之一。通过让用户能够运用一种象Python一样优雅、凝练的动态语言,利用PowerShell库的强大功能,微软可以为开发人员提供兼具这两个方面优点的工具。

       Python不是唯一在.NET上开疆拓土的动态语言。加拿大软件开发人员John Lam正在开发RubyCLR,一个允许开发人员使用Ruby建立.NET应用程序的桥接软件。其他已移植到.NET的动态语言包括Lisp (Rob Blackwell的L#)和Smalltalk (SmallScript公司的S#)。

       升阳计划扩展自己的Java平台以提供更强的动态语言支持。在一个不同寻常的声明中,升阳Computational Theologist(计算问题专家)Gilad Bracha承认,“我们已经注意到有人希望使用Java以外的语言编程”。

       升阳一直在努力改善动态语言支持,并计划在Java标准版第6版中包含一个JavaScript实现。为了简化Java虚拟机上的动态语言开发,升阳已提交了一个JSR (Java Specification Request),描述了一个叫做invokedynamic(意为“被动态调用的”)的新的字节码操作,Bracha称之为“松散类型的虚调用”。 升阳也计划加入对动态元编程设施的支持(运行时代码生成机制,类似Lisp的宏和Python的元类)。虽然有几种动态语言已经在Java虚拟机上可用,包括JRubyJython,新的特性仍很重要,因为它们将简化动态语言的开发过程并扩大其可存取的功能范围。动态元编程是一个特别激动人心的特性,在领域特定语言的设计(domain-specific language design方面有很大潜力。

       一些热衷动态语言的人也对Parrot感兴趣。Parrot是一个特别为动态语言设计的开源虚拟机,最初构想为Perl 6的基础。它有一些很动人的特性,包括一个可以极大地简化语言开发过程的内建语法引擎。虽然Parrot离完善还很远,一些基于Parrot运行的语言已经处于不同的开发阶段,包括Python, Ruby, Tcl, Lisp, basic等的移植版本。Perl 6开发人员宣称Parrot最终会为脚本语言提供比JVM或.NET更好的性能,但Parrot仍处于开发早期,所以该说法尚有争议。Parrot和其他较突出的虚拟机在架构上有几处重要不同,特别是Parrot是基于寄存器(register-based)的,而Java的字节码与.NET的通用中间语言是基于堆栈的(stack-based)。

       昨天(2006年8月9日)Parrot发布的0.4.6版本(译注:目前为0.4.8版,2007年1月16日发布)包含了部分Ruby(译注:Ruby已经从Parrot退出,已在开发自己的虚拟机)和Javascript实现,语法引擎和抽象符号树生成器的改进,新的存取全局变量的操作码(opcodes),以及错误修正和其他一些改善。

       托管语言平台有很大潜力支持现代动态语言,尤其在性能(在某些情况下IronPython比标准实现快1.5倍)、互操作性、广泛的开发库支持等方面。已被广泛使用的开发平台,象.NET和Java,将扩展功能以满足动态语言日益流行的需求。微软和升阳将继续加强其对动态语言社区的投入,Parrot也将迎头赶上,提供另一个健壮的开源选择。

 

原文参照:http://arstechnica.com/news.ars/post/20060810-7462.html