ruby语言的特点有哪些,ruby语言的应用领域_1

  ruby语言的特点有哪些,ruby语言的应用领域

  本文重点探讨了Ruby语言商业化开发的可能性,也希望更多对Ruby社区感兴趣的开发者对Ruby语言的发展现状有更深入的了解。本文中的许多观点都是基于作者对Ruby语言发展的理解。红宝石语言目前可以说是春秋战国时期。作者表达了国内开发者应该如何跟进Ruby语言发展这个契机的想法。

  在进入正文之前,我们先来看看从网上总结的两个案例。

  案例1:

  相关供应商内容

  055-79000下载技术分析报告

  克莱顿M克里斯坦森提出了颠覆性技术的基本理论,这源于他在1988年数字设备公司倒闭时的灵感。为什么一个各方面都很优秀的公司会突然惨败?当数码设备之星陨落时,商业媒体指责该公司管理不善。但克里斯滕森注意到,同时破产的还有其他几家小型机公司。既然他们的破产没有被事先讨论过,那么肯定还有其他因素在起作用。他的结论是,小型机行业的衰落不仅仅是因为个人电脑的出现,更重要的是,PC代表了一种小型机公司无法应对的破坏性技术。

  案例二:

  保守的卤化银巨头柯达发明了世界上第一台数码相机。十几年后的2006年,这家巨头宣布将通过换标签的方式,坚定执行其向数码领域全面转型的战略。此时,美国相机市场销售的数码相机数量首次超过胶片相机。柯达的技术创新怎么了?为什么其在电影领域持续的技术领先和创新效果不佳?HBS教授克莱顿M克里斯坦森的《创新者的困境》的管理理论帮助我们看清了技术创新的水平(我们不能只在这座山上)。颠覆性技术出现后,维持性技术终将成为过去。

  上面提到的两个案例都谈到了颠覆性技术。事实上,破坏性技术现在已经成为完全创新技术的代名词。自满和满足于现状是不可能实现发展的。Ruby语言的商业化和技术开发也是如此。

  Ruby语言的商业化

  前不久,Ruby语言的Rails框架2.0版的发布,让Ruby语言的影响越来越广泛和深入。那么,是谁在使用Ruby语言的web应用框架呢?调查结果显示,Ruby语言的Rails框架不仅被国际大公司采用,如西门子、IBM等,还被很多著名的高流量应用网站采用,如综合社交网站spokeo、姓名搜索网站spock等。要知道,就在几年前,Ruby还是那么默默无闻,默默无闻。Rails框架的成功使Ruby成为主流语言,并对其起到了重要的推动作用。

  Rails框架的成功也吸引了很多企业和开发者来开发这个新的Ruby框架。因此,新的框架如雨后春笋般出现,如Merb和Swing,这是一个桌面软件框架。尤其是框架Merb更是引人注目。该框架不仅吸收了Rails框架的优点,还充分发挥了其内核更小、与第三方框架集成更灵活等优势。难怪有人说它是Rails框架的简化版。从网络新闻报道来看,虽然Merb在很多方面与Rails相似,但是框架Merb的商业化倾向比Rails更明显。

  Ruby语言商业应用的另一个重要举措是与NetBeans 6.0的结合。我们知道,作为一个面向业务使用的软件开发框架,最重要的是要有一个兼容的集成开发环境。在这方面,NetBeans 6.0是近年来发展最快的工具,今年获得了软件行业的最高荣誉:Jolt最佳工具奖。NetBeans 6.0不仅可以用C语言开发工具(以下简称Ruby或CRuby),还可以用Java语言为JRuby开发软件。更重要的是,它还包含了Rails框架软件的开发工具。当然,我们必须看到,其他类似的企业级集成开发工具也在积极跟进,比如Aptana Studio和Eclipse DLTK动态语言工具,它们是Ruby语言发展的重要推动力。

  从技术角度来说,要让一门计算机语言真正商业化,只有开发工具是不够的,最重要的是语言运行环境的性能和速度。在这方面,JRuby语言明显领先于其他语言。比如在《通用Ruby多虚拟机API的研究开始》一文中,我们已经讨论过如何解决在Ruby上同时运行多个应用时需要多个解释器的问题。本文的目的是如何避免内存的浪费。当然,这只是许多深入研究的一个例子。与其他实现不同,JRuby是目前唯一可以在虚拟机上运行的Ruby语言。Ruby语言的虚拟机在提高程序的性能和速度方面起着重要的作用。这里先不说虚拟机的使用,目前广泛使用的Ruby 1 . 8 . 6版本基本可以满足大型应用网站的需求。一旦市场上正式发布一款性能好速度快的虚拟机,将会是Ruby的一大助力。Ruby的商业价值显而易见。

  Ruby语言实现多样化

  随着Ruby语言的日益实现,Ruby语言的概念也在发生变化。在2000年或以后,Ruby语言一般是指用C语言实现的Ruby的正式版本,但现在Ruby语言正在成为一个通用的概念,或者说是语言的技术规范。

  我们可以从三个方面来分析Ruby语言的实现。一个是面向CRuby兼容性的实现;二是Ruby语言风格的不兼容实现,三是基于Ruby语言的领域特定语言的实现。

  以下是一些与CRuby兼容的重要Ruby语言实现:

  用C语言实现的Ruby语言=Ruby或CRuby(非正式名称)

  用Java语言实现的Ruby语言=JRuby(Sun公司赞助)

  基于Smalltalk-80架构=Rubinius用C语言实现的Ruby语言(Engin Yard公司赞助,聚集了一大批Ruby语言专家)

  用Objective-C语言实现的Ruby语言=MacRuby(苹果公司赞助)

  在上面的列表中,除了Ruby的正式版,其他的实现都是由大公司资助的。为什么大公司要资助这些开源项目?玄机不明。不过可以肯定的是他们对Ruby语言发展前景的认可。

  Ruby语言的多样化是Ruby语言发展的结果,这是好事。但是,可能的问题是Ruby语言实现之间的兼容性,就像Linux的开发过程一样。

  直到今天,Ruby仍然是最重要的Ruby语言的实现。随着YARV并入Ruby,Ruby的性能有了一个大的飞跃。这一合并的结果是发布了开发版本Ruby 1.9。当JRuby语言的实现进一步完善后,JRuby和Ruby的兼容性会越来越明显。尽管双方沟通协调,但两个实现之间的不兼容始终存在,比如线程问题,甚至一个小小的命令都不一样。而且从根本上来说,所谓的兼容只是单向的,即JRuby兼容CRuby,反之亦然。这种情况本身就是一种彼此的分离。不兼容给企业和开发者带来了很大的麻烦和障碍。

  随着不兼容的Ruby语言的出现,也会冲击和影响Ruby语言的发展。如Sapphire语言,声称具有Ruby语言的语法风格,更简单。它最重要的设计思想是一致的、清晰的、深度面向对象的。这种新的类Ruby语言,虽然目前影响很小,但至少给了我们新的思考和启示。

  用Ruby语言实现的DSL(领域特定语言)是Ruby语言最重要的特性之一。使得Ruby语言的应用更加广泛和深入,Rails框架中涌现出大量的DSL,这也是Rails成功的原因之一。模板Malline可以让代码更容易维护和管理,而且在代码开发中,只需要懂Ruby语言就可以开发网页,不需要关注HTML等其他语言。而桌面布局语言LEL可以使桌面软件开发更加容易和方便。

  总而言之,Ruby语言的多样化是Ruby语言发展的必然。只有打破框架,才能找到Ruby语言的最佳实现,只有最好才能带来最大的回报,而Ruby语言目前的发展方向就是沿着这条路前进的。

  Ruby语言的虚拟化

  这里所说的虚拟机是指程序虚拟机,即程序的虚拟运行环境,或者更准确地说是编译器和运行层的语言虚拟机。

  如前所述,计算机语言的性能和速度是企业采用的重要因素。虚拟机是解决这一问题的重要而现实的方法之一。

  目前虚拟机正在从单语虚拟机向多语言虚拟机发展。比如Java语言虚拟机,从Java语言变成了多种语言共享的虚拟机。我们知道,JRuby语言可以在这个虚拟机上运行,Jython也在利用这个虚拟机。Parrot是最成熟的动态语言虚拟机。虽然这个虚拟机是为Perl语言设计的,但它也是一个可以变成Ruby语言的虚拟机。虽然这是一个发展趋势,但是笔者认为单语言虚拟机的性能应该更好。据报道,Ruby 2.0可能会采用自己的单一语言虚拟机Rite。

  虽然CRuby还没有出现自己的虚拟机,但是Ruby虚拟机的商业需求是显而易见的。这也是JRuby语言实现的目的之一。除了JRuby自带的虚拟机,Ruby语言的虚拟机也在不断出现,比如基于Smalltalk-80语言的Ruby虚拟机Shotgun。从网站首页可以看出,散弹枪的目标很明确,就是为商家服务。它可以支持编译代码的运行,从而支持代码的加密,有效保护软件的知识产权,这是商业应用中的重中之重。另外,它的解释器内核更简单,更容易维护,节省了人力、物力和时间。尤其需要注意的是,Ruby语言虚拟机提供的性能并不是以硬件为代价的,而是以软件本身的实现为前提的,而且这种实现的潜力还在不断增加。

  随着Ruby虚拟机的不断创新,可以肯定的是,Ruby语言及其框架的应用软件将会更加丰富。在其他Ruby虚拟机出现之前,借助Java语言的强大和越来越多多核计算机的性能,JRuby语言将成为一个不可忽视的选择。

  Ruby语言和Rails框架之所以能在众多语言和框架中脱颖而出,是因为它们不是一种持续的创新技术,而是一种破坏性的创新技术。我们知道很多框架都在模仿Rails框架,但是它们能像Rails一样成功吗?事实上,真正的成功来自独特而彻底的创新。

  从以上事实和分析可以看出,无论是Ruby语言还是Rails框架,都已经开始跨越一个重要的业务断层,正在向成熟和企业迈进。

  从Java语言的标准竞争经验,可以想象Ruby语言一旦进一步商业化的未来。我们准备好了吗?我们也可以有自己的Ruby语言实现吗?如果用D语言,以后是不是也能有用这种语言说话的地方?

  姜伟,上海理工大学经济管理学院信息管理系教师,副教授,系统工程硕士。他的研究方向是信息管理理论与方法、系统分析与设计、数据库、计算机算法和WEB应用。

  转自:InfoQ.com

ruby语言的特点有哪些,ruby语言的应用领域_1