Ruby的未来:注定它将成为主流

我并不是一个非常守旧的Ruby爱好者。我从2005年开始接触Ruby,那时跟我一起的还有很多极限编程(XP)的同事,我们都加入了Rails 大潮。传说很多Ruby爱好者都是在那个时代从敏捷/极限编程社区转来的。我们都讨厌在企业级Java里为了完成一个东西需要成堆的代码和XML配置文件的标准做法。

那是一段醉人的日子。元素数据编程,动态类型,Ruby和Rails组合而带来的约定优于配置(Convention Over Configuration)的模式,给了我们更加快速的开发和更简洁的代码。已经内置到语言中的测试驱动原则、框架和整个社区提供给大家了很多写的很好的,经过验证过的代码。行为驱动开发(BDD)——在Java中垂死挣扎(有谁在用JBehave?)——在Ruby中出现并兴旺发展:Rspec是最早的成功案例,接着是Cucumber。如今,这最好的Ruby展示厅同样也是最好的Agile/XP展示厅,其它的语言望尘莫及。

转眼来到了2012年,革命的年代已经结束。Ruby开发已经成熟,Ruby成为了编程界的主流语言,至少主流在向Ruby漂移。虽然在传统企业里,如银行业,Ruby的渗透并不是很成功,但新兴的Ruby企业,如LivingSocial和Groupon,如今已发展成大企业。而使Ruby成为主流的标志性时刻是2010年11月Salesforce.com收购Heroku,这一地位在七月进一步被加强——Ruby的创始人Matz (Yukihiro Matsumoto)被 Heroku 聘为首席架构师。

更有趣的是,Rails已经成为Web创业公司的标准技术。而这种成功并没有对Agile/XP社区造成太大的影响,这个社区仍是一个关注编程工艺的社区,喜欢尝试各种语言,如Clojure和Erlang,这是一个由草根阶层推动的社区,伴随着世界各地各种各样的研讨会。

大部分当年做Ruby开发的今天仍然是Rails爱好者,但我们却进入了一个反对Rails的时期。简单死板的Model-View-Controller(MVC)架构在2005年是非常有吸引力,而现在它却因为缺乏合适的独立分层结构而受到批评。Yehuda Katz——推动Rails 3的中坚力量——在Twitter上讽刺说:

ruby的未来

Rails如今的问题是:1/2的人担心它会变成Java,而另一半人正在努力把它变成java

我希望,也相信,Ruby on Rails社区会越来越成熟,能够充分的反省,在Web开发中引入正确的架构分层,而不需要再发明一个类似企业级Java Bean这样的东西。随着即将到来的苏格兰Ruby大会上Rails六边会谈,我们的信心更加增强;还有Avdi Grimm的Objects on Rails 和Steven Baker的Solid Rails都在推动改革的发展。

YARV现在是当前Ruby 1.9.x的官方的解释器,相当于Matz的最初的Ruby解释器,它在性能上有了巨大的提升。

JRuby是当前最成熟,最广泛被用来替代YARV的Ruby解释器,开发团队一直在持续不断的更新它。它把所有Java虚拟机的优势都带给了Ruby,即时编译,访问丰富的Java库,跟老的Java程序进行交互,真正的、本地的多线程。这最后一点更是重要,它让Ruby有能力来利用多核服务器进行大规模服务:使用多线程来更好的利用内存,而不是生成新的进程。

Iron Ruby,.Net框架上的Ruby实现,虽然并没有受到微软官方的直接支持,但仍然不断的在进步。

Rubinius是一个用Ruby写成的Ruby(算是吧)。尽管早期有不少挫折,经过重大的重写,Rubinius现在处于稳定的改进中。它现在正朝着实现完全多线程的版本2前进,这一版本中将去除Global

Interpreter Lock。

Maglev是一个基于VMWare的 GemStone/S 3.1 虚拟机上的Ruby实现,它允许分布式的和持久性的Ruby对象。社区里的人对它的认识来自于它早期的曝光:在2008年RailsConf大会上的首秀让它光芒四射,但随后几年却变得悄无声息。

MacRuby,RubyCocoa的继任者,是一个1.9版的Ruby的实现,但却是基于OS X内核技术的。对于 Ruby on OS X 来说最大的问题相同的代码不能运行在 iOS (iPhone / iPad)上,这就是为什么最近的Ruby in Motion诞生的原因,它是基于MacRuby的,但完全兼容iOS App Store,这是一种让人兴奋的技术。

MRuby有两原因使我们需要在这里提它一下:他是Matz自己的项目,它是由日本政府资助的。它是一个Ruby的轻量级实现,设计用于和Lua语言相似的领域。日本人很可能会是使Ruby嵌入到电子设备成为可能并兴起的重要力量。

Ruby的首次出现距今已有17年,Rails的诞生已有8年,Ruby社区仍然是一个令人兴奋的地方。看着当前的各种活动,各种变革,各种成果,这是我以前从未见过的繁荣景象。