本文是Ruby in a nutshell一书出版之际,该书的作者,同时也是Ruby语言的创始人Matz介绍O'Reilly出版社访谈的对话内容整理总结。
Yukihiro Matsumoto (松本行弘,网上被称为 Matz)是 Ruby 的创始人,同时也是O'Reilly 最新出版的语言类书籍 “Ruby in a nutshell” 的作者。
Matz 是一位专业的程序员,他在日本的开源公司 netlab.jp 工作。他也是日本最为著名的开放源码传播者之一。他发布了许多开源的产品,包括 cmail,一个基于 Emacs 的邮件客户端程序,完全用Lisp 写的。
Ruby 是他第一个在日本以外国家成名的软件。最近我们跟Matz 谈起了Ruby 的历史,Perl , Python 对 Ruby 的影响以及为什么我们需要另外一种脚本语言。
以下就是访谈内容片段:
Stewart: 让我们从回顾历史开始吧,您为什么要决定开发 Ruby 语言?
Matz: 那追溯到 1993 年的事情了,我当时跟一个同事谈起了脚本语言,它们的强大的功能和可能性给我留下了深刻的印象,我觉得脚本语言是条正确的道路。作为一个长期的面向对象编程的忠实拥护者,对我来说面向对象编程也非常适合于脚本语言,所以我开始在网上搜寻。我发现了 Perl 5,当时它还没正式推出,正打算实现一些 OO 的特点,但是那不是我想要的, 我最终放弃了将Perl 作为一个面向对象脚本语言的企图。
后来我发现了 Python, 它是一个解释型,面向对象的语言,但是我觉得它不是一个“脚本”语言,除此之外,它还是一个包括了过程编程和面向对象编程的混合型语言 。
我需要的是一个比 Perl 更强大,比 Python 更面向对象的语言,这就是为什么我决定设计我自己的语言的原因。
Stewart: 你什么时候真正开始编写 Ruby 的? 最终花了多长时间才使成为一个可用的语言?
Matz: 我开始开发 Ruby 是 1993 年的 2 月 24号, 第一个 Ruby 版本的“Hello world” 运行的时候是同年的夏天。第一个 Alpha 版本发布于1994 年 12 月。
Stewart: 你是单独完成它的吗?或是由开源社区贡献了大部分代码?
Matz: 直到 1996 年,我都是独立在开发它,打那儿以后,一个 Ruby 社区形成了,他们帮了我很大的忙,但是我仍然做绝大部分的工作,但是很多人给我提供的代码的修补和补丁。
Stewart: 日本的开源社区有多活跃?和美国的开源社区运动相比,你觉得如何?
Matz: 非常的活跃,但是我觉得比美国的社区在规模上要小。
Stewart: 你怎么会想起用 "Ruby" 这个名字的?
Matz: Ruby 是一种珍贵宝石的名字(红宝石)。它不是什么简称。当我始这个语言项目的时候,我就跟一个同事开玩笑说,这个项目必须以一个宝石的名字来命名(比如 Perl),我的朋友想出了“Ruby”,它是一种美丽珍贵的宝石的简称。所以我就采纳的这个名字,它最终成为了这个语言的官方名字。
后来我发现 Pearl(珍珠)是六月的诞生石,而Ruby 是七月的诞生石, 我认为Ruby 这个名字作为 Perl 之后的一门语言的名字真是再恰当不过了。
Stewart: 你在设计 Ruby 的时候有什么指导原则吗?
Matz: 是的, 我称之为“最少的惊奇”,我觉得人们在编程的时候都希望表达他们自己的思想,他们并不想使用语言来斗争。编程语言对程序员来说应该显得自然。 我试图让程序员在使用 Ruby 的时候感受到编程的乐趣,而将注意力集中在编程的趣味和创新上来。
Stewart: 你在 Ruby 的邮件列表中很活跃,在那里最通常的问题是什么?
Matz: 各种各样的问题,从“我如何在 windows 2000 的机器上安装 Ruby” 到 “你能将我的补丁合并进来修复你的错误吗”,应有尽有。 Ruby 社区中的人是如此的不同而又互相友好,真是让人惊奇,我相信社区是 Ruby 最强大的力量。
Stewart: 在 Slashdot 或其他网站上,如果提及 Ruby , 有个问题总是会反复出现,“为什么会需要另外一种脚本语言?”,你对这个问题的想法是怎样的?
Matz: 为什么需要另外一种语言?理论上,不需要。我们只是需要一个图灵机来解决我们所有的问题。人们需要更多复杂的工具来编程,这是人类的需求。只有有人觉得使用Ruby很快乐,对我来说,这个原因就足够了。
Stewart: 我注意到,在发明 Ruby 之前你在使用 Perl 和 Python. 在 Ruby 中你集成了 Perl 的那些部分?
Matz: 很多。 Ruby 的类库是对 Perl 语言功能的面向对象重组,另外添加了一些Smalltalk 和 Lisp 的东西。我想我是用了很多 Perl 的东西, 不过我不应该继承诸如 $_ $& 和其他一些风格丑陋的变量。
Stewart: 那么 Python 呢?你试图重用这个语言中的哪些特点?
Matz: 远比 Perl 要少,但是我还是偷学了一些东西,比如异常名,另外我从它的源码中学到很多东西。
Stewart: 如果人们已经熟悉了 Perl 和 Python, 他们有什么理由要转到 Ruby 上来呢。
Matz: 为什么要转到Ruby? 如果对Perl 或者 Python 很满意,就不需要转到 Ruby上来。但是如果确实觉得需要一门更好的语言,Ruby 可能就是你的选择。学习一种新的语言并没有害处。 它给你新的想法和见解,你不比转到它,可以仅仅学习和试试。 在你觉得 Ruby 使用起来非常舒服的时候再决定转到使用它。
Stewart: 你觉得 Ruby 在日本如此成功,但是在美国和欧洲并流行是什么原因呢?
Matz: Ruby 自从 1995 年第一次正式发布就在日本有了名气,直到 1997 年才有了英文文档。 在 1998 年建立 Ruby-talk邮件列表之前我没有对Ruby 做过任何宣传,所以,对非日语国家来说,这是一门非常新的语言。我想这是主要原因。现在我们有了关于 Ruby 的英文书籍了,就像我的这本 “Ruby in a Nutshell"。 社区也在发展,去年日本之外没有人知道 Ruby 是什么。今年,人们知道Ruby是一个语言的名字,我想今后三年情况会有所改观。
Stewart: 文化差异是否也在其中起了作用?
Matz: 我不这么认为。我设计 Ruby 是为了尽量减少我的惊奇。当世界各地的人告诉我Ruby 减少了他们的惊奇并让他们享受到编程的快乐,这多少让我感到惊讶,现在我确信全世界的程序员都是很相像。
Stewart: 你未来还有什么计划吗?
Matz:
- loop do
- read and reply mails
- write code
- write document/article/book
- write code
- end
Stewart: 你现在对下一个版本 Ruby 有什么计划吗?
Matz: 我希望把它做的更快,更稳定。我计划重写 Ruby 2.0 的解释器,代码名是:”Rite“.它将更小,更容易嵌入,线程安全而且速度更快。它将使用字节码引擎。它可能要让我花上几年的时间来实现,因为光维护现在的 版本已经让我相当的忙碌了。
【编辑推荐】