Ruby语言百家谈 | 51CTO开发频道 | Web开发 | 51CTO首页
Ruby on Rails大师谈:“绅士的程序员”修炼之道 Ruby on Rails大师谈:“绅士的程序员”修炼之道
Ruby on Rails大师谈:“绅士的程序员”修炼之道 Ruby on Rails大师谈:“绅士的程序员”修炼之道


初探编程世界
认识Ruby并为之着迷
Ruby语言的优点与语言的选择
Ruby中那些最好的特性
Rails 3.0令人不解与期待之处
开发工具的选择:不习惯IDE
开发语言没有优劣之分
Ruby最适合用在怎样的项目上
Ruby是最敏捷的语言吗?
Ruby在企业级开发中的未来
人物介绍
  Dave Thomas,敏捷宣言创始人之一,《程序员修炼之道》与《Programming Ruby》的作者。他有着三十余年的编程经验,现在主要经营Pragmatic Programmer出版社,阅书无数。同时,Dave每天都仍然在编写代码。  
访谈整理  

在敏捷中国大会2009上,51CTO记者对Dave Thomas进行了专访,讨论了Ruby的现状和发展前景。以下为访谈整理:

51CTO记者:您是如何看待自己的?一个敏捷宣言的创始人?一位Ruby on Rails专家,或者综合的说就是一位软件大师?又或者,您觉得自己像是一位“开发界的传教士”一样的人物么?

Dave:我当然不认为我自己是任何一方面的专家。如果我真要给自己定义一个称呼的话,我倒是这样想的:在一百年前的英国,有一群绅士——很有钱的绅士,也许是继承了一大笔家族的财富——同时他们也有时间。他们当中的有些人成为了“绅士科学家”:他们周游世界,探索发现。他们可能研究昆虫或是植物之类的东西,而他们对于科学界有着重要的贡献。如果说我希望我自己成为某种人的话,我希望成为这些绅士科学家这样的:一位绅士程序员。享受编程,或者说,就是钻研编程,并不断学习新事物。从这种意义上而言,我并不认为我是个专家什么的,我只是享受学习新事物的过程而已。

51CTO记者:能否谈谈您是如何开始编程的吗?

Dave:我是如何开始编程的吗?我想想……我最初接触编程是在1970年代,大概是72年吧。我那时还在学校,刚刚完成一系列考试。具体来说的话,当时学校里面已经没有什么事情让我们做了,但我们还是得去学校。当时他们(校方)告诉我们,马路对面有个学院,刚刚开始弄一个新东西,和编程有关,你们有兴趣么?当时我们想,编程是啥玩意儿?然后他们又说,你们到马路对面去编程,就不用过来学校这边了。于是我们很高兴的说,那好,我们就去吧。

于是我来到了马路的另一边,开始了BASIC编程。当时我们用的那种很古老的打孔机,就是那种往纸条上打孔的机器。你把程序写在纸条上,然后将纸条拨入(输入)到大型主机中去。你把纸条放在读取器里,按下按钮,你就能看到纸条被传送到主机上面,然后主机运行你的程序,把结果返回给你。

这是梦幻般的体验,我们玩的开心极了。那时我发现了一件事。原本我打算成为数学家的,可能会去牛津或者剑桥攻读数学。不过这时我发现了编程,所以这经历完全改变了我的规划。我还尝试使用自行修改过的BASIC,因为那时运行我们程序的系统一次只能够存储五条程序,而我们想要更多。所以我写了一个BASIC程序,这个程序中能够运行其他的BASIC程序,并在需要的时候抓取出来,从而打破了五条的限制。我真的乐在其中。然后我在暑假找到了一份假期工——编程相关的。我后来去了伦敦的帝国理工大学,在我大二那年,他们提供了计算机的课程。当时对于所有人来说都是很新颖的,我们都觉得,哇,好像在探险一般。回想当年,我们所拥有的自由也是一种社会常态了。我们有图书馆和大型主机,我可以直接走进去,随便摆弄机器——我有学院机房的钥匙。那真的是很快乐的一段时光。这就是我迷恋上编程的过程吧。

51CTO记者:能谈谈您是如何开始认识Ruby,并发现它的价值的么?

Dave:我是那种喜欢编程语言的人。我一直都在尝试新的编程语言。我们编写《程序员修炼之道》的那个时候,我每隔几天——差不多每周吧——都会下载一个新的编程语言。具体如何认识Ruby的我也记不太清,大概是通过社区信件之类的讯息下载的Ruby。一般情况下,我下载一个语言之后,我会编译一下,运行一下,这样差不多过去10分钟,然后就开始觉得“这很无聊,试试下一个吧”。有时候可能会稍微长一些。不过对于Ruby,直到第二天早上,我仍然在摆弄它。然后我给Andy(《程序员修炼之道》的另一位作者)打电话说,嘿,你一定要试试这个。然后他也下载了。基本上我停止了其他一切工作,直到之后一天我仍然乐在其中。基本上我就是一见钟情了,具体原因其实我也不是很清楚,我只知道它很适合我。这就是我接触Ruby的过程。

之后,《程序员修炼之道》编写完了,我和Andy想写一本有关代码说明(specifications)的书。我们不喜欢程序员们写代码说明的方法:无论英文还是中文,我们不喜欢当时那种写一段说明,写一段代码的编写方法。为什么不能把代码说明写在代码当中呢?然后就能够逐渐将代码说明迁移并集成到最终的项目中去。我们的主意是:可执行的代码说明(executable specifications),基本上就是一些你可以运行的代码说明。到今天的情况基本上就是测试者和开发者的行为与不同的设计,但我们仍然需要语言本身来说明项目的需求。Ruby是一个完美的语言。

于是我们开始撰写这本书,但我们发现我们必须不停地解释有关Ruby的内容,于是我们决定写另一本书,单讲Ruby。结果就是,这本关于Ruby的书积累了600多页,而到后来我们累了,就把最初打算写的那本书停止了。那本Ruby的书(《Programming Ruby》)就是这样来的。

51CTO记者:过去几年,Ruby有哪些令人兴奋的新特性?

Dave:Ruby是一个成长缓慢的语言。不过这并不是说它没有显著的成长——它只是循序渐进的成长。一直有很多非常不错的小变化。好像Ruby 1.9中带来了非凡的多国语言支持,可以同时解读多种编码的字符。这是我唯一知道的可以在源文件中同时使用ASCII、Unicode、BIG-5等编码,以及我所知道的任何一门语言的编程语言。我可以使用这个星球上的任何编码编写代码,而代码就是能够运行。

Ruby有不可思议的正则表达式,就是说,即使你是那种特别任性固执的人,你也可以使用一个正则表达式引擎来进行函数式编程。这些是我认为非常不错的特性。

过去这些年来,Ruby从来都不是一个快速的语言,不过它正在变得越来越快。Ruby 1.9——我是说正规的、源自日本的那个Ruby 1.9——是有史以来最快速的一个Ruby版本。我知道我这话听起来有点像乔布斯,不过这真的是非常不错。

最令我兴奋的一个特性吗?真的是不好说。不过在我看来,有两件事物决定了Ruby今日的规模。很明显,Ruby on Rails是一个。做为一个间接的测量,我们可以看一看Ruby相关书籍的销售情况。如果你回顾2000年以来的书籍销售情况,你会看到一条缓慢上升的直线;然后Rails出来了,这条直线立刻弯了上去。因为Ruby是解决问题的一个很好的答案,而Rails中也有这样的特性。现在你可以用一种非常简洁的方法编写Web应用,而Ruby只是刚好出现在了正确合适的位置。所以我的看法就是,Rails相当于Ruby的“杀手应用”。

不过在Rails之上,真正令Ruby非常实用的因素,有很大一部分应该归功于Ruby Gems。这是Ruby库的一个打包机制。在Ruby Gems之前,我们不得不下载库,每一个库都有自己的创建指示。你可能花了5分钟创建好了,然后它又提示你“哦,不行,我还需要那个什么什么库。”然后你又需要去下载另外一个库……你可能会花费半天的时间在配置这些库上,而你修改了点东西,又得重新配置。Ruby Gems事实上是个非常简单的技术,但却令使用Ruby库的这个过程大大的简化了。现在呢,当我需要用到某个Ruby库时,我会十分清楚,一定已经有人写好了一个相应的Ruby Gems,节省了我自己配置的精力和时间。这真的很神奇。

51CTO记者:Rails 3.0将包含Merb。对此您有什么期待?

Dave:这将一定是十分有意思的;不过目前我还不知道它(Rails 3.0)将会是什么样子的。我阅读了相关的资讯,我去听过各种有关Rails 3.0的报告,但我仍然不很清楚——尤其是Rails 3的哲学。我觉得Rails工作的很好的原因之一,便是它的武断。它会告诉你:这是编写Web应用的正确做法,你照做吧。在Rails之前,如果你是写Java的,要做一个Web应用,你会需要选择:我要用什么引擎?什么系统?等等诸如此类。你会花费两周来决定你要使用什么工具包,什么框架,等等,而你的项目启动前就有八千行的XML配置代码。

然而在Rails中,你就只能用它指定的东西:一切都是固定的。做为一个开发人员,在一开始的时候,我很讨厌这一点:你凭什么告诉我应该用什么?不过过了一段时间我意识到,这对我其实是有好处的。因为每个人都一样,所以有着完整的一致性:身为一个开发者,我不单单可以查看我自己的应用,我还可以看别人的程序,而我知道里面的东西都被放在什么地方。

在Rails 3中,他们进行了简化,不过也放置了更多的层(layer)。这些层允许你,比如说,改变持久层的引擎,或者改变渲染引擎。我担心Rails正在失去它的一些自负:它的那种“我告诉你该做什么”的气势。它正在把决策权归还给程序员。虽然这听起来是很好,但我真的不确定。毕竟,Rails的一个特殊之处就在于它只有一种做事的方式。

所以我想了解它的哲学——我的意思是,代码都在那里,而我想听听别人对于Rails 3的哲学是如何理解的,他们对Rails 3开发有什么看法。当然了,尽管我这样说,我还是会使用Rails 3的,因为Rails毕竟是编写Web应用最好的方法之一,至少对我而言。Rails 3是一个进步,我自然会跟上。

51CTO记者:您使用什么开发工具?

Dave:我使用emax编辑器。事实上不完全是:我既使用emax又使用textmate。我大多数开发在苹果机上进行,而对于大部分工作,我用textmate便足够了。我从来都不是IDE的用户——不知为什么,我就是用不惯它们。总之,对于项目我会使用textmate,而如果只是一些小修改编辑,我的emax总是打开的,我直接打开文档编辑就完了。

51CTO记者:Ruby是敏捷的语言吗?

Ruby是一个工具。仅此而已。工具不会敏捷。如果你把我放在溜冰鞋上,我看起来会非常的不敏捷。如果是一个优秀的溜冰运动员穿着溜冰鞋,那看起来将会棒极了。你会说溜冰鞋是敏捷的么?不会的,它只不过是个工具。语言本身不是敏捷的,敏捷的是你使用语言的方式。你可以进行敏捷C开发,可以进行敏捷Ruby开发,我不认为语言的种类有什么关系。

(文字待续中,敬请关注!)

Ruby百家谈
Ruby入门 更多
· 程序员们,是时候开始学习Ruby了
· 进入Ruby on Rails世界
· Ruby on Rails入门之道
· 二十分钟 教你Ruby快速入门
· The Ruby Way(第二版)中文版
Ruby语言特点
· 牛人点评Ruby语言十大令人喜爱的特点
· Ruby语言的发展趋势和启示
· 我爱Ruby的三十七个理由
· Ruby on Rails为企业SOA做好准备了吗
· RoR(Ruby on Rails)走入企业应用?
Ruby的优势 更多
· Java、.Net、PHP、Ruby优劣势概览
· 专访:Ruby能否成为第二个Java
· Java之父:Ruby、Ajax一个都不能少
· Python和Ruby语言之特点对比
· 脚本语言排行榜 PHP、Ruby和Python领先

策划制作:杨赛 电话:(8610)68476606-8035 Email:yangsai@51cto.com
Copyright©2005-2009 51CTO.COM 版权所有