电子说
Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(YukihiroMatsumoto)开发,遵守GPL协议和RubyLicense。它的灵感与特性来自于Perl、Smalltalk、Eiffel、Ada以及Lisp语言。由Ruby语言本身还发展出了JRuby(Java平台)、IronRuby(.NET平台)等其他平台的Ruby语言替代品。Ruby的作者于1993年2月24日开始编写Ruby,直至1995年12月才正式公开发布于fj(新闻组)。因为Perl发音与6月诞生石pearl(珍珠)相同,因此Ruby以7月诞生石ruby(红宝石)命名。
完全面向对象
在Ruby语言中,任何东西都是对象,包括其他语言中的基本数据类型,比如整数
变量没有类型
Ruby的变量可以保存任何类型的数据。
任何东西都有值
不管是数学或者逻辑表达式还是一个语句,都会有值。
ruby语言很优雅,可以做到不需要注释就可以读懂。
语法简单
普通的面向对象功能(类,方法调用等)
特殊的面向对象功能(Mixin,特殊方法等)
操作符重载
错误处理功能
迭代器和闭包
垃圾回收
动态载入(取决于系统架构)
可移植性高。不仅可以运行在多数UNIX上,还可以运行在DOS,Windows,Mac,BeOS等平台上
适合于快速开发,一般开发效率是JAVA的5倍。
这里所谈及的虚拟机是特指程序虚拟机,即程序的虚拟运行环境,或者更确切地说,是在编译器和运行层面的语言虚拟机。
一门计算机语言要能够为企业所采用,其性能和速度是重要的因素。虚拟机就是解决这个问题的重要而实质的方法之一。
当前虚拟机正在从单一语言虚拟机向多语言虚拟机方向发展。例如,Java语言虚拟机已经从Java语言变成为多种语言共享的虚拟机。我们知道,JRuby语言是可以运行在该虚拟机上,另外Jython也在实现利用该虚拟机。又如Parrot是一款最成熟的面向动态语言的虚拟机。尽管该虚拟机是为Perl语言所设计的,但是它也是可以成为Ruby语言的虚拟机。尽管这是一种发展趋势,但是作者认为,单一语言虚拟机的性能应该会更好。据悉,Ruby2.0可能会采用自己的单一语言虚拟机Rite。
尽管至今CRuby还没有出现自己的虚拟机,但是Ruby语言虚拟机的商业需求是明显的。这也是JRuby语言实现的目的之一。除了JRuby有自己的虚拟机外,Ruby语言的虚拟机也在不断的出现,比如基于Smalltalk-80语言的Ruby语言虚拟机Shotgun。从该网站的主页上可以看出,Shotgun的目标是十分明确的,就是为商业服务。它能够支持运行编译代码,这样就可以支持代码的加密工作,以有效地保护软件的知识产权问题,这是商业应用中的头等大事。此外它的解释器内核更简单和更容易维护,既节省人力、物力又节省时间。尤其需要值得注意的是,Ruby语言虚拟机提供性能不是以硬件为代价的,而是以软件本身的实现为前提的,这种实现的潜力还在不断增加。
随着Ruby语言虚拟机的不断创新,可以肯定Ruby语言及其框架的应用软件将会更加丰富。在其它Ruby语言虚拟机还尚未出现之前,JRuby语言将会借助于Java语言的力量和当前越来越多的多核电脑性能成为一种不可忽视的选择。
随着Ruby语言的实现越来越多,Ruby语言一词的概念也在发生着变化。在2000年或者再晚一些,Ruby语言一般都是指以C语言实现的官方版本Ruby,但是现在Ruby语言正在变成为一个通用的概念,或者说是该语言的技术规范。
我们可以从三个方面来分析Ruby语言的实现。一是面向CRuby的兼容性的实现;二是以Ruby语言风格的不兼容的实现,三是以Ruby语言为基础的特定领域语言的实现。
下面我们列举了一些重要的面向CRuby的兼容性的Ruby语言实现:
以C语言实现的Ruby语言=Ruby或者CRuby(非正式名称)
以Java语言实现的Ruby语言=JRuby(由Sun公司出资所赞助)
以基于Smalltalk-80架构采用C语言实现的Ruby语言=Rubinius(由EnginYard公司出资所赞助的,该公司聚集大量Ruby语言高手)
以Objective-C语言实现的Ruby语言=MacRuby(由Apple公司出资所赞助的)
在上述的列举中,除了官方版本Ruby之外,其它的实现都是由大公司出资所赞助的,大公司为什么要出资赞助这些开源的项目呢?其中的玄妙不得而知。但是,可以肯定的是他们对Ruby语言的发展前景的认可。
Ruby语言的实现多元化,应当说是Ruby语言发展过程中百花齐放的结果,这是好事。但由此可能带来的问题是,Ruby语言的实现之间的兼容问题,就如Linux的发展过程。
Ruby一直到今天仍然是最重要的Ruby语言的实现,随着项目YARV合并到Ruby,使得Ruby的性能得到一次比较大的飞跃,这个合并的结果就是已经发行的开发版本Ruby1.9。当JRuby语言的实现得到进一步完善时,与Ruby之间的兼容性问题将变得越来越明显,尽管双方之间在沟通和协调,但是两者实现之间的不兼容性是始终存在的,比如线程问题,哪怕即使是一个小小的命令也存在着差异。而且从根本上说,所谓兼容也只是单向的,即JRuby兼容CRuby,反之则不然。这种情况本身就是一种相互之间的脱离。不兼容性给企业和开发人员带来了巨大的麻烦和阻碍。
随着以非兼容性的、Ruby语言风格的语言出现,也会冲击和影响着Ruby语言的发展。如Sapphire语言,该语言声称,它具有Ruby语言语法风格并且更为简单。它的最重要的设计思想是一致的、明确的和深度面向对象的。这门新兴的似Ruby语言,尽管目前该语言本身的影响力很小,但它的出现至少是给了我们一种新的思维和启示。
以Ruby语言实现的特定领域语言DSL(DomainSpecificLanguages),是Ruby语言的一个最重要的特性。它使得Ruby语言的应用更加广泛而深入,在Rails框架中涌现出大量的DSL,这也是Rails成功的原因之一。模板系统Malline能够使得代码变得更为容易维护和管理,而且在代码开发中可以只需要会Ruby语言就可以开发网络的页面,而不需要理会其它语言如HTML。还有基于桌面布局语言LEL能够使得桌面软件开发变得更加简单和方便。
总而言之,Ruby语言的实现多元化是Ruby语言的发展的必然,我们只有打破框框才能寻找到Ruby语言的最佳实现,只有最佳才能带来最大的回报,而Ruby语言的目前的发展方向正是沿着这条道路在前进。
全部0条评论
快来发表一下你的评论吧 !