评估 Ruby
2006 年 5 月 10 日
如果你正在阅读本文,我假设你已经知道 Ruby 编程语言,尤其是 Rails 框架用于开发 Web 应用程序,已经引起了很多关注。有些人认为它是编程的未来,而另一些人则认为它是一种危险的偏离。
我几年前开始使用 ruby。 实用主义者 使我对它产生了兴趣,它很快成为我首选的脚本语言。随着时间的推移,它逐渐承担了这个网站的大部分生产工作,特别是这个 bliki。我非常喜欢这种语言。
我的个人喜好和它是否应该被我们的客户使用之间存在着差距。我们可以根据它的功能评估它对客户项目的适用性,这会导致关于动态类型、约定优于配置、进程与线程等方面的优缺点的许多争论。这些讨论是有用的,但我仍然对它们持谨慎态度。太多的事情很难用这种方式来判断,因此我们在客户项目上花费了大量时间,被那些在高尔夫球场上听起来不错的技术所拖累。我更倾向于根据经验做出判断,找到那些在主流环境中拥有交付记录,并且尝试过使用 Ruby 的人。
这在公共作家中可以得到一些体现。Ruby 吸引了许多在其他领域拥有丰富经验的人,他们认为 Ruby 给他们带来了额外的优势,比如 both the Prags、Justin Gehtland、Bruce Tate 等人,足以让 Ruby 值得一看。但尽管我可能很偏执,但我一直最关注 ThoughtWorkers:我了解他们的历史,并且可以更容易地检查他们的项目。
现在还处于早期阶段,但我现在已经积累了一些项目经验。到目前为止,结果坚定地支持 Ruby。当我问“你认为你在 Ruby 中的生产力比在 Java/C# 中显著提高吗?”时,每次我都会得到一个强烈的“是”。这足以让我开始说,对于合适的项目,你应该尝试一下 Ruby。当然,这只是留下了一个小问题,即什么是“合适的”。
有一点需要提到的是,虽然我们有一些我认为是典型的 Web 项目,它们与目前被认为是 Rails 主要领域的项目非常契合,但也有一些不同的元素。
- 一个自助服务设备,消费者直接操作触摸屏。Rails 存在于这里,因为 UI 是一个非常 Ajaxian 的 Web 前端。但它也与硬件设备、加密、奇怪的网络内容进行通信,所有这些都在类似 Linux 的设备上进行。
- 在批处理过程中进行大量 SQL 操作,其中 Ruby 用于指定所需内容,生成的 Ruby 表达式被转换为 SQL 以执行实际工作。前端有一些 Rails 的影子,但它仍然不是典型的 Rails 应用程序。
- 一个看起来像标准 Web 应用程序的项目,但在许多方面涉及从不同格式中混杂数据,以及一些非常花哨的图表和图表(使用 Ploticus)。
在所有这些情况下,相关人员都说他们比在其他平台上更快地获得了功能和价值。这让我认为,如果你正在寻找交付速度和生产力,你应该认真考虑 Ruby。
还有一些悬而未决的问题。特别是,现在还为时过早,无法看到在后期的增强阶段会发生什么,尤其是在团队发生变化时。有些人认为 Ruby 的动态特性和缺乏工具将是一个问题,而另一些人则认为 Ruby 鼓励的简单性将弥补这种差异。这个问题的本质是,我们现在还无法真正确定,我会在了解更多信息后更新你。
Cedric Beust 有效地论证,即使 Ruby 是一个更优秀的平台,它也可能不会成为主流。我当然理解这个论点,就像许多前 Smalltalker 一样,我一直都知道比当前主流企业选择更有效的平台。如果你认为只使用主流平台很重要,你需要等待更长时间才能看到结果。当然,有很多人 不关心跟随主流。
还有很多项目,开发生产力被政治和其他沟通因素所淹没。在这些情况下,Ruby 的优势将大大减弱。
但总的来说,这些来自值得信赖同事的经验,让我越来越相信在速度、响应能力和生产力至关重要的重要工作中使用 Ruby。