Rails创建者:Silverlight可能会挣扎

InfoWorld:你什么时候开发rubyonrails的?为什么?汉森:我开始开发rubyonrails实际上是我做的第一个Ruby项目的一部分,那就是Basecamp。2003年夏天我刚进入Ruby,在那之前的四五年里我一直在做PHP和Java。但我厌倦了这些环境,想给一些新的东西一个机会,所以我无意中发现了Ruby,开始玩它。在玩了大约一周之后,我知道我不可能再回到PHP或Java或者我以前做过的任何事情。

信息世界:为什么?

汉森:鲁比真是太适合我了。在我以前工作过的环境中,很多让我感到沮丧的事情似乎在Ruby中得到了难以置信的完美解决。这是我第一次注意到我非常喜欢Ruby的地方,那就是语言的美学。Ruby代码天生就是美的。当然,你可以写难看的代码,但你也可以写非常漂亮的代码。

InfoWorld:Rails是如何产生的?

汉森:一开始它不想成为铁轨。一开始我只是想实现Basecamp,这个37signals的Web应用程序。我开始着手这方面的工作,那时Ruby有一些Web框架,但(它们)不一定是我直接喜欢的。我进入Ruby时,对Web应用程序应该是什么样子以及如何从我在PHP和Java中所做的工作中开发它们有很多先入之见。我想把这些想法带进来。所以我开始研究一点与数据库的对话,一点运行一些模板语言来显示HTML。所有这些小块开始越来越多地堆积起来。几个月后,我意识到我现在有了一个相当大的工具块,我只是为自己构建的,只是为了在Ruby中实现Basecamp。也许我真的可以分享。所以在2003年12月左右,我进入了一种模式,嘿,我想发布这个。我想把这些东西,这些工具,我正在做的,把它放在一个盒子里,让别人享受它。因为我在想,红宝石现在是一块隐藏的宝石。真的很遗憾。在我看来,现在有太多的Web开发都停留在PHP或Java上,这正是我当时所考虑的。如果我能像现在和鲁比在一起那样开心的话,如果我把这些都留给自己的话,那将是一个讽刺。所以在2003年12月左右,我做出了一个决定,要用它来构建一个框架,但直到6个月后,Rails才真正第一次发布。我们在2004年6月24日发布了rails0.5。

InfoWorld:这是另一个周末的Ruby会议。为什么开发人员对Ruby和rubyonrails如此兴奋?

汉森:当然。我认为很多开发人员对rubyonrails很感兴趣,因为它让他们能够集中精力思考一些简单的事情,比如编程的乐趣。这不仅是在真正的企业生产系统上工作的副作用,而且是Ruby on Rails开发的前沿,我们真的希望开发人员对他们正在开发的程序、他们正在使用的工具以及他们作为程序员所处的环境感到高兴。我认为(我们)明确地选择把它作为开发Rails的中心,确保美学是正确的。这不是我们试图优化的传统计算机科学属性,比如内存使用率或性能。我们自然关心这些事情,因为如果不够快,就不会让我们快乐。但首先,我们关心的是获得漂亮的代码,以及获得一个让人们对自己的工作感到满意的开发环境。在大多数传统的开发环境中,有很多事情让人们痛苦不堪。我们试着找到那些痛点并把它们去掉。

信息世界:你能说出其中几个吗?

汉森:例如,其中一件事就是如何配置应用程序。很多环境,特别是在Rails出现之前,都有这样一种观念:基本上每次都是从一张白纸开始。一切都必须从头开始配置。我怎么跟数据库通话?如何在对象、记录、行等之间映射这些字段?您每次都必须显式地配置它,即使您可能一次又一次地做同样的事情。就像土拨鼠日一样,一切都一次又一次的开始。所以有了Rails,我们决定今天不是土拨鼠日。我们要做一些决定,我们要做一次。一旦我们做出了这些决定,我们会把它们变成惯例,我们会教你这些惯例。一旦你学会了,你就完成了。就像我们不再讨论数据库表中的主键字段将被调用一样。他们将被称为身份证,就是这样。现在,(事情)结束了。让我们继续下一个决定。就这样,我们通过了大量的标准配置点,并从字面上删除了它们。我们用约定取代了它们,约定说如果你只是做大多数开发人员大部分时间都在做的事情,你将免费得到它。所以他们会被称为身份证。反正你不在乎。你不应该关心主键字段是什么,如果你能把自己放在上面而不关心它,你可以免费得到所有这些配置的东西。所以我认为这可能是我们在考虑框架方面做出的最大贡献。我们怎样才能得到更少的配置?我们怎样才能用惯例来代替它呢?我们怎样才能从中获得更高的生产力呢?

InfoWorld:rubyonrails与Spring这样的Java框架相比怎么样?

汉森:我认为最大的区别之一肯定是传统的观念胜过配置。Java框架特别喜欢用XML把几乎所有的东西连接起来,从某种意义上说,它听起来很棒。你得到了最大的灵活性,你有机会把所有东西都按照你想要的方式连接起来,但大多数人并不在乎。我认为这是很多框架的谬误,特别是在Java中,他们认为灵活性是免费的。灵活性不是免费的。估计过高了。如果你用这种灵活性来换取一些限制,你会从等式中去除很多复杂性,你会从所有你不需要做的事情中得到很多生产力。这就是Rails不同于Spring或Struts之类的东西的原因之一,另一个原因就是Ruby之类的东西。Ruby编程语言是一种令人惊叹的编程语言,我们选择在整个堆栈中使用它。所以一切都是用Ruby写的。我们用Ruby编写视图,用Ruby编写模型,用Ruby编写控制器。我们尽量保持Ruby的风格,而不是把XML和其他配置文件混在一起。

InfoWorld:你能说出几个主要的Web应用程序或Web站点是用rubyonrails开发的吗?

汉森:当然。所以我自己的公司37signals已经有一段时间了,它是Rails的第一个应用程序。我们有一个叫做Basecamp的东西,一个项目协作工具。我们有一个叫做Highrise的东西,只是在线管理上下文。但也有很多其他公司。我特别喜欢43岁东西网,这就像一个社交网站,讲述你想要实现的人生目标。有shopify.com网站,这是一个非常酷的电子商务市场,在这里,你可以创建一个漂亮的外观店在非常小的努力,并开始销售商品非常小的前期成本。

InfoWorld:您是否关注正在发布的Ruby和rubyonrails工具,比如SapphireSteel的Ruby In Steel、CodeGear即将推出的Ruby产品以及FiveRuns的Rails管理套件?

汉森:是的。我很高兴看到所有的工作都在进行。从rubyonrails的第一天起,我就希望围绕它创建一个经济生态系统,因为我认为这是确保像Rails这样的框架能够继续存在的因素之一。当人们的工作开始依赖于此,当人们的薪水开始依赖于此时,它将确保框架的长寿命。这种情况很早就发生在顾问们身上,他们转向制作rubyonrails项目,而不是以前使用的任何东西,现在这种情况发生在第二层。人们围绕着向Rails开发人员销售工具来建立业务,我认为这只是——这是生态系统演变中的一个重要点,也是RubyonRails的一个伟大里程碑。

InfoWorld:您如何看待sunmicrosystems最近发布的用于内容创建的JavaFX脚本?世界已经为另一种脚本语言做好了准备吗?

汉森:我认为总是有新想法的空间,但我不认为目前对RIA(富互联网应用)的大惊小怪是有道理的。我想我们以前经历过很多次这样的循环,在某种程度上让我惊讶的是历史似乎被忽视了。我们用Java小应用程序解决了这个问题,它们将统治网络。一切都将在一个javaapplet中。HTML和CSS已经成为历史。Flash出现了,Flash开始专注于应用程序。现在Flash将统治Web,HTML等是昨天。现在,Silverlight,Apollo,JavaFX,他们都在竞价收购JavaScript,HTML和CSS[spaces],我就是不买。我不认为开发人员总的来说会跳进一种专有技术,取代HTML和CSS给他们的东西。

InfoWorld:我认为Sun说JavaFX是开源的。我不确定JavaFX脚本是否只专注于Web开发。我认为这只是一个可以用它来完成的功能,我甚至不确定它在这一点上是否做得那么好。

汉森:这可能是真的,我认为HTML和CSS专注于Web开发,而且我认为推动这些替代交付平台的人们存在误解,不知何故Web开发人员渴望获得越来越丰富的体验,他们真的不喜欢使用HTML和CSS,但事实并非如此。我们不是吵着要在网上重新创建桌面。

信息世界:我们不需要新的捕鼠器?

汉森:不,我们没有。HTML和CSS实际上是一个很好的开发环境,很多计算机科学家或者已经在这里呆了很长时间的人可能会认为它们是黑客或者肮脏的东西,但是它们是有效的。

InfoWorld:但是你在Ruby-on-Rails上使用过吗?

汉森:完全正确。HTML、CSS和JavaScript是向用户提供Rails应用程序的关键组件。我不认为这会改变。

但不是Ruby?

Hansson:Ruby生成这些东西,因此HTML、CSS和JavaScript是交付机制。

InfoWorld:你认为Java正在被Ruby之类的脚本语言所取代吗?

汉森:我认为Java和C以及其他类似的语言肯定正在被更精简、更轻巧的方法所取代。我认为Ruby、Python、SmallTalk和其他语言在这一领域的发展很快,因为人们意识到,他们更愿意拥有一个令人愉快的、高效的环境,而不是相信这些关于安全的论点,或者如果你没有类型之类的东西,那么坏的事情就会发生。因此,我绝对看到这些语言的市场份额在下降,因为越来越多的人意识到他们并没有因为使用脚本语言而死亡。

InfoWorld:您如何看待.Net和Windows开发以及微软使其公共语言运行时能够在Macintosh平台上运行?

汉森:在某些方面我并不在乎。我不太明白。我对微软的生态系统并不感兴趣。这是一个与我所处的世界截然不同的世界,这是一个开放标准、开放源码等等的世界。并不是说他们不做有趣的事。我肯定认为他们有一些有趣的想法,[比如]LINQ(Language Integrated Query),这非常有趣。当然,开源世界可以从其中的一些举措中学到很多东西,但是大规模地跳进微软的船从来没有吸引过我这样的工作。

InfoWorld:微软能否在Silverlight上取得成功,或者AJAX和Flash是富Internet应用程序开发的主要参与者,因为它与多媒体有关?