对有主见软件的看法

作者:Kevin Bedell

David Heinemeier Hansson 是 Rails 的创建者和 37signals 的合伙人。他很快将从哥本哈根搬到芝加哥,离开他的出生地加入公司总部。

访谈

LJ: 对于不熟悉 Ruby 和 Rails 的读者,您能否简要介绍一下它们是什么,以及它们与其他开发环境有何不同?

DH: Ruby 是一种动态的、面向对象的编程语言,由 Yukihiro Matsumoto 于 1995 年创建。它被描述为 Smalltalk 和 Perl 的混合体,但我认为这种并列并没有充分体现它的优点。Ruby 首先是一种用于编写优美代码的语言,它让程序员感到快乐。

Rails 则是试图将 Ruby 的美感和生产力融入到 Web 应用程序的解决方案中。我们努力坚持指导 Ruby 开发的同一核心原则:让程序员快乐!

这一切听起来可能很空洞,但只有当你认识到程序员生产力的最重要因素是动力时,才会改变看法。快乐的程序员肯定是积极性高的程序员。因此,如果你优化快乐,你就是在优化动力,最终导致生产力的优化。

LJ: 什么是 Rails?为什么要开发它?

DH: Rails 是从解决实际问题的方案中提取出来的。它不是一个科学项目。它不是一些聪明人坐在象牙塔顶端设计出来的东西。它只是在我尝试使用 Ruby 创建 Basecamp(37signals 的基于 Web 的项目管理系统)后留下的通用部分。

这意味着它是一个非常务实、非常有针对性的框架,具有强烈的方向感。你可能不同意它的愿景,但它无疑有一个愿景。我喜欢称之为有主见的软件。而 Rails 肯定有很多主见。

从某种角度来看,它可以说是我对 Web 应用程序应该如何构建的看法的集合。当然,你可以在不完全同意我关于如何创建 Web 应用程序的 所有 看法的情况下使用 Ruby on Rails,但是你同意的看法越多,你付出的努力就越少。

而且,这些看法非常简单。它们旨在在大多数时候为大多数人提供他们想要的大部分东西。这与传统的观点强烈不同,传统观点认为一切都应该是可配置的,框架应该是公正和客观的。在我看来,这与说一切都应该同样困难是一样的。

LJ: 我一直在阅读关于 Active Record 和 ORM(对象关系映射)功能(或应用程序如何与数据库交互)的文章,这些功能可以通过 Ruby on Rails 使用。您对此有何评论?

DH: Active Record 被许多人称为 Rails 的皇冠。它的核心使命是使关系数据与面向对象的领域模型无缝结合。并以最少的显式配置来实现这一点。

因此,你将拥有一个 Person 类,它自动映射到 people 表(请注意 Rails 自动识别的大小写和复数形式)。如果 people 表有一个 first_name 列,则此 Person 类将具有一个 first_name 方法。因此,我们正在使用反射和约定来摆脱困扰旧世界框架的 XML 配置。

虽然对于习惯了 Hibernate、EJBs 和其他 Java 框架的企业界人士来说,缺乏显式配置获得了高分,但仅仅是 ORM 的概念就赢得了 PHP/.NET 阵营的青睐。Active Record 使你摆脱了绝大多数 SQL 编写工作。它是自动动态构建的。不再有三行的 INSERT,不再有重复、乏味的 UPDATE。剩下的唯一 SQL 就是瓶颈清除工作,即实际需要脑力来思考如何让这个查询真正快速运行。

LJ: 为了让我们的许多读者采用 Ruby 和 Rails(或说服他们的管理层让他们采用),他们需要真实的成功案例。Ruby 和 Rails 在哪些地方被用于构建可扩展的生产应用程序?

DH: Ruby on Rails 在许多组织内部非常受欢迎。我们有大约 400 人注册为部分或完全从事与 Rails 相关的工作。所以,就像冰山一样,大部分活动都发生在水面之下。

但是,我们也有很多公开的成功案例。我自己的公司 37signals 有四个广受欢迎的应用程序,成千上万的人使用它们来管理他们的项目 (Basecamp)、个人生活 (Backpack)、待办事项列表 (Ta-Da List) 和协作写作 (Writeboard)。该套件一直是 Ruby on Rails 的头号宣传典范,并帮助赢得了许多怀疑者的支持。

但 37signals 绝不是唯一一个使用 Ruby on Rails 做大事的小团队。Robot Co-op 拥有一套社交网络,包括 43things、43places 和 43people。这些网络加起来每天在其三台机器的设置中推送超过 250 万个动态页面视图。

Odeo 正在运行 Ruby on Rails,为其面向数千用户的播客门户提供支持。Evan Williams 创建了 Blogger,并且对运行大型公共站点非常了解。他现在在 Odeo 掌舵。

Strongspace 只是 TextDrive 正在制作的几个 Rails 应用程序之一。他们提供千兆字节的云安全托管。这是一个非常酷且流畅的网站,由那些拥有官方 Rails 托管公司头衔的人创建。

而这只是一小部分。我们有从电子商务到生产力再到内容等各个领域的主要应用程序——你能想到的都有。Rails 几乎已被用于创建所有类型的 Web 应用程序。

LJ: 顺便说一句,我使用 Backpack 已经有一段时间了,我很喜欢它。它是完全使用 Rails 开发的吗?

DH: Backpack 确实是 100% Ruby on Rails。当它发布时,只有 2,000 行代码。

LJ: Java 在真正渗透到企业之前已经存在了一段时间。它花了 J2EE 的开发才确立了自己作为真正的“企业开发平台”的地位。事务管理、灵活的部署策略等的添加似乎是其成熟为该角色所必需的。您认为 Ruby 和 Rails 最终会走类似的道路,还是您认为它的角色会有所不同?

DH: 我们有广泛的企业受众使用 Rails,仅仅是因为它可以更快地完成工作。我认为我们已经看到了 Java 在企业中的巅峰时期。我感觉到人们逐渐认识到,虽然 Java 和 J2EE 阵营在遗留系统集成、需要两阶段提交的大型分布式设置等方面肯定有其用途,但对于企业中创建的大多数应用程序来说,它都显得过于复杂。

Pragmatic Programmers 的 Dave Thomas 最近将此表达为“用大锤砸核桃”。是的,少数特殊的工作确实需要大锤。但是你不需要用它 [大锤] 来完成所有其他需要完成的工作。

这就是为什么将 Java 和 J2EE 等东西作为公司标准似乎如此荒谬的原因。为什么你要使用最重、最慢的机器来解决 80% 的业务问题,而这些业务宁愿让其有价值的软件速度提高两倍、三倍、五倍或十倍?或者,无论你的环境中的倍数是多少。因此,将重型武器留给实际需要的最后 20%。

LJ: 您认为还有什么重要的事情要告诉我们的读者关于 Ruby 和 Rails 的吗?

DH: 试一试!我们努力使 Ruby on Rails 成为最容易试用的 Web 应用程序框架。获取 Ruby,获取 RubyGems(Ruby 库的 apt-get),gem install rails,rails my_application,你就拥有了你的应用程序骨架,可以开始生产了。

很难用语言表达入门有多快、多容易。因此,我邀请您的读者观看 Rails 网站上的 15 分钟视频,我们在其中构建了一个完整的、虽然简单的博客引擎。

本文资源: /article/9015

加载 Disqus 评论