松本行弘:代码的未来

松本行弘(Yukihiro Matsumoto),Ruby语言发明者,亦是亚洲首屈一指的编程语言发明者。现兼任网络应用通信研究所(NaCl)研究员、乐天技术研究所研究员、Heroku首席架构师等。昵称“Matz”。讨厌东京,喜欢温泉。图灵社区就《代码的未来》,以及中国读者所关心的一些话题,采访了Ruby语言设计者松本行弘(以下简称Matz)先生。(采访者:《代码的未来》译者周自恒)

周:松本先生今年出版了新书《代码的未来》,这本书的中文版正在由我进行翻译,预计明年会在中国出版。您的上一本书《松本行弘的程序世界》在中国受到了读者的好评,这次的新书和前作相比有哪些不同,又有哪些看点呢?

Matz:《松本行弘的程序世界》一共涉及了14个话题,每个话题都是浅尝辄止,内容比较广泛但不是很深入,而这次的新书则是设定了一个大的主题——即对未来即将到来新技术的思考,因此内容比《程序世界》所涉及的范围要窄一些。此外,这本书还在时间尺度上进行了探讨,例如从计算机出现以来,到现在为止经历了怎样的变化,并由此来思考未来可能会发生的变化,也就是对过去和未来两方面都进行了思考。计算机的世界变化非常快,而这本书的目的在于探讨其未来变化的方向。

周:说起计算机的发展,您在书中还提到了关于摩尔定律的一些话题呢。

Matz:摩尔定律是描述计算机将如何发生变化的一个定律,书中所探讨的不仅包括计算机本身的变化,还包括计算机为周围的环境所带来的变化。

周:关于编程语言进化的方向,保罗·格雷厄姆在一篇名叫“一百年后的编程语言”的文章(参见图灵图书《黑客与画家》P156)中,主张“拥有最简洁最小核心的编程语言”将是未来发展的趋势。对于这一观点,您在书中表示“不同意”,这是为什么呢?您对编程语言发展方向的看法又是怎样的呢?

Matz:保罗是一个很喜欢Lisp的人,而Lisp所具备的特性正好符合他所说的“一百年后的编程语言”的样子,因此保罗认为一百年后的编程语言就应该变成Lisp这个样子。但实际上,Lisp这个语言的历史已经有50多年了,说实话,Lisp现在并没有成为一种有很多人在用的主流语言。我觉得这也许是因为Lisp对于大多数程序员来说不具备那么大的魅力,也就是说,作为一种“拥有最小核心”的语言,或者从某种意义上说是一种很“美丽”的语言,和程序员们所期望的语言之间,存在着一定的差距。如果一两年的时间里,Lisp的魅力没有被大家所接受,那还可以理解,但已经过了50年还没有被广泛接受的话,是不是它在本质上就不太符合大家的期望呢?“对人类来说好用的语言”和“拥有最小核心的语言”之间的这个差距可能是很大的,我觉得可能将来100年也没办法消除。至于未来的编程语言应该是怎样的,我觉得应该是兼具接近Lisp的运行模型,以及人类容易理解的语法这两方面特征,这么一看Ruby是不是更接近这样一种语言呢?

周:松本先生被称为Ruby之父,我们知道在编程语言的设计过程中,可能要做出很多选择,例如动态还是静态、基于原型还是基于类等等。在Ruby的特性中,您认为当初最难做的选择是什么?

Matz:在设计Ruby之前,我在上大学的时候还设计过另外一种语言,而那种语言是完全静态的,和Eiffel语言非常相似。而我原本也是特别喜欢静态语言的,不过上大学时设计的那种语言是以学术研究为目的的,多年之后,当我想设计一种编程语言作为自己的工具来用的时候,我就觉得还是动态语言实际用起来比较好用。抱着这样的想法,我设计了Ruby,现在看来这个设计还是正确的。那么当初对于Ruby应该是静态还是动态这个问题,也许算不上是最难的吧,但至少是我在设计中做出的“最大”的一个判断。而在此之后,因为是动态语言,那就借鉴一下Smalltalk和Lisp吧,Perl有一些功能也不错,于是如此这般吸收了这样一些语言的特性,也就显得比较自然而然了。Ruby的特点在于Mixin模块,而这个特点在Ruby诞生当时还算是非常罕见的,因为我不喜欢多继承,总觉得应该有一个更简单的方式,所以就设计了Mixin模块。

周:那么现在回过头来看,Ruby当中有哪些地方会让您觉得“如果当初设计成这样就好了”呢?

Matz:最开始的时候我的目标只是想实现Perl所具备的功能,因此从Perl借鉴了很多,比如说用美元符号($)来修饰变量名之类的,现在看来觉得学得有点过了,搞得和Perl太像了。当然,除此之外还有其他一些小地方,但最主要的我觉得就是这个了,也就是跟Perl太像了这一点。刚开始的时候,还没有形成Ruby的语法习惯和文化,因此很多东西都是从Perl“抄”过来的,现在看来好像一股脑拿过来的东西太多了,里面其实有一些是不需要的。而经过一段时间之后,Ruby自己的文化已经形成,Rails出现之后又形成了Rails的文化,而到了这个时候再看的话,可能就会觉得这些Perl的部分好像没啥必要呢。

周:大家都认为“Ruby有现在的人气基本上都是由于Ruby on Rails的贡献”,您在书中也认同这个观点,那么您认为Ruby on Rails获得巨大成功的原因是什么呢?

Matz:首先是得益于Web的快速发展,几乎所有的软件开发平台都在瞄准Web这个领域。以往在用CS(客户端-服务器)架构来开发的系统,现在都可以在Web上实现了。在Web上能够开发的应用变多了,这是一个主要的背景。另外,Ruby的优势在于进行软件开发非常容易,也就是开发效率比较高。这两点结合起来,我认为就是Ruby on Rails成功的主要原因。

此外,Ruby还有一些比其他语言强大的特性,例如元编程(Metaprogramming)、通过猴子补丁(Monkey patch)所带来的可扩展性等等,通过这些特性,甚至可以对基础的类进行增强。DHH正是运用了Ruby的这些强大之处,开发出了Rails。而对于没有接触过Ruby的人,比如只用过Java这种比较“死板”的语言的人来说,会觉得“唉?居然还可以做到这样吗?”,我觉得这也是Rails成功的原因之一。

周:据说DHH曾经是准备用PHP来开发这样一个框架的,但后来却转向了Ruby?

Matz:对,因为PHP在元编程方面有很多限制吧。Rails推出之后,又出现了很多(在PHP上实现的)模仿Rails的开发框架,比如Symfony、CakePHP等等,但是Ruby所拥有的强大特性PHP却并非完全具备,即便不考虑它们各自的背景,只是单纯去对比这些开发框架的话,我还是觉得Rails更强大一些,我觉得DHH选择Ruby也正是看重了这一点。顺便,我其实是见过DHH的,在丹麦,那时候他还没开始学习Ruby,说不定那次见面也是对他产生影响的一个原因吧。

周:中国读者很关心的一个话题是,Ruby目前最广泛应用的领域就是Web开发,那么在Web开发这个领域之外,Ruby的发展方向又是什么呢?

Matz:的确,Ruby在Web开发领域被用得很多,例如Rails、Sinatra等开发框架。但编程的世界并非只有Web而已,我也一直希望Ruby能够从Web中走出去。在不久的将来,我认为Ruby有望被应用的领域,主要有三个。

以这三个领域为首,我希望Ruby能够在Web开发以外的领域有更多的发展。

周:Twitter主要是用Rails开发的,最近我看了一则新闻,说美国大选的时候Twitter遇到了前所未有的大访问量,Twitter称为了应付访问量的上升,正在从Ruby转移到其他语言,您对这个问题怎么看呢?

每天告诉自己我很棒!

松本行弘:代码的未来

相关文章:

  • 【算法】直接插入排序C语言实现
  • 嵌入式 FAAC1.28 在海思HI3518C/HI3518A平台linux中的编译优化
  • Android 动画animation 深入分析
  • Mybatis极其(最)简(好)单(用)的一个分页插件
  • 你感兴趣的文章:

    标签云:

    亚洲高清电影在线, 免费高清电影, 八戒影院夜间, 八戒电影最新大片, 出轨在线电影, 午夜电影院, 在线影院a1166, 在线电影院, 在线观看美剧下载, 日本爱情电影, 日韩高清电影在线, 电影天堂网, 直播盒子app, 聚合直播, 高清美剧, 高清美剧在线观看 EhViewer-E站, E站, E站绿色版, qqmulu.com, qq目录网, qq网站目录,