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 上讽刺说:

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 社区仍然是一个令人兴奋的地方。看着当前的各种活动,各种变革,各种成果,这是我以前从未见过的繁荣景象。

英文原文:The future of Ruby