视频丨二叉树团队
在近日于上海召开的 RubyConf China 站上,InfoQ 有幸采访了 Ruby 之父松本行弘先生。松本行弘先生是 Ruby 语言的设计者,投身编程行业已逾三十年。作为一门编程语言的创造者与推动者,他是怎么看待对于 Ruby 语言的褒奖与批评?又是怎么看待 Ruby 与 Java 语言的对比?对于日本的 IT 产业现状与 996 的加班问题,他又抱有怎样的看法?
松本行弘、Ruby 与中国我是松本行弘,Ruby 的主要设计者和实现者。大概 25 年前我开始设计和开发 Ruby,目前这门语言被全世界包括中国的开发者所使用。最近我的新书《编程语言的设计与实现》被翻译成中文在中国出版。我对编程语言本身有浓厚的兴趣,几十年来一直孜孜不倦地研究各种语言,这对我设计 Ruby 有很大的帮助。
在日本以自制编程语言为主题的书非常多,这些书绝大部分是介绍编程语言的实现的,几乎都没有涉及语言设计。设计编程语言是一件比较小众的事,有这方面经验的人很少,我这二十多年来一直在从事 Ruby 的设计和开发工作,在这些年的经验基础上,我把设计编程语言的过程和心得写成了一本书,那些对编程语言感兴趣的程序员读起来会有所收获,非常感谢图灵公司能够引进并组织翻译这本书。
Ruby 在世界各地都有开发者社区。光今年,我就参加了欧洲、美国、印度、新加坡、中国的 Ruby Conf 大会。看到这么多人都在使用 Ruby,我觉得很开心。各地的开发者虽然国籍、人种、身高不同,但他们有着惊人的相似之处:他们都非常热爱和享受编程,能与他们相遇并交流是一件幸福的事。
注:本届 RubyConf China 是举办的第十届,松本行弘在大会上做了《The future of Ruby》的主题演讲。
关于 Ruby 语言的那些爱与批评我最开始开发 Ruby 时,没有想过会有这么多人来使用它。我当时想,大概会有百来个人用它,过了几年它就会被人淡忘。令我意想不到的的是,Ruby 后来被很多开发者所使用,越来越多的人参与到 Ruby 语言本身的开发和发展中来,用户们自发在全世界各地成立了开发者社区,这进一步促进了 Ruby 的推广。
Ruby 语言有很多特性,我觉得最为大家喜爱的是它的简洁、高效以及人性化。开发者用 Ruby 写的程序比用别的语言写的程序更简洁。Ruby 非常高效,很多情况下只需要短短几行代码就可以处理很多工作。它非常人性化和灵活,让开发者能够更加专注于编程最有乐趣的部分。这些也许是 Ruby 开发者最喜爱的特性。
的确开发者对 Ruby 语言有很多正向的评价,比如刚才讲到的简洁、高效和人性化。但同时也有开发者不喜欢 Ruby,因为一旦将 Ruby 应用到工作中,由于 Ruby 太过灵活,犯错的概率会随之增大。
从使用 Ruby 的角度来说,我个人认为最重要的是灵活性。当然容易写出 bug 的确很烦,不过我还是想要保留 Ruby 的灵活性。的确有一些开发者跟我抱怨 Ruby 太灵活,还有人说 Ruby 很多东西都是在运行时来决定的,比较麻烦。这些其实是一个取舍的问题。Ruby 会持续改进,进一步提高开发效率。
Ruby 3.0,coming nextRuby 团队正在开发 Ruby 的 3.0 版本。(在此前 Ruby 25 周年庆祝会上,松本先生曾表示 Ruby 3.0 有望实现 3 倍提速。)目前 Ruby 还处于 2.X 的阶段,预计 3.0 版本会有比较大的变化,计划发布时间在明年的年底。
3.0 版本针对 Ruby 的一些不足之处做了改进,具体来说:
比如 Ruby 多核利用的问题。现代电脑一般都有多个 CPU,但 Ruby 诞生之初,电脑普遍只有一个 CPU,这就导致 Ruby 目前在设计上还没能完全利用多核,在这方面我们希望有所改进。Ruby 需要测试才能知道数据类型是否正确,这一点也常常被吐槽。更快发现错误能够提高开发效率,所以我们希望引入类型检查的功能。另外,我们还引入了函数式语言的一些特性,以提高生产效率。 Ruby 和 Java 是同龄人,也是一个追赶者
Ruby 的确常常被拿来与 Java 作比较。Java 诞生于 1993 年,而 Java 作为一门编程语言正式发布于 1995 年。我开发 Ruby 也是从 1993 年开始的,发布也在 1995 年,但比 Java 要晚一些。所以 Ruby 和 Java 基本上可以算是“同龄人”。
Java 有 Sun、甲骨文、IBM 这些大公司的支持,商业上非常成功。Ruby 一直以来都仰仗社区成员和开发者的支持,从这个角度讲 Ruby 的发展比 Java 慢得多。随着互联网的兴起,因为 Ruby 的灵活性和动态特性十分适合 Web 开发,Ruby 才渐渐为人们所知。
Java 有大量的使用者和开发者,有一个规模庞大的生态圈,Ruby 也希望能够以 Java 为榜样,迎头赶上。
技术不能解决所有问题最近几年时常会有人说 Ruby 不如前几年那么火了,甚至有比较毒舌的人说:Ruby 已死(笑)。所有这些言论,其实都可以归结为一种光环效应:当一种新技术产生的时候,受到过度的关注,大众会抱有过高的期待。但是当真正明白这个技术是怎么一回事时,往往又会有点失望。接下来会进入一个稳定期,基本所有技术都会经历这样一个过程。
比如说,现在比较热门的 AI、深度学习,大家都在谈论它们。但是当发现 AI 不是之前想象的那样万能的时候,又会有点失望。
Ruby 也一样,Ruby on Rails 刚出来的时候,因其在 Web 开发上的优势,获得了比较多的关注。但实际上,Ruby on Rails 不是无所不能的,也会有各种各样的问题,人们此后逐渐转向其他技术,Ruby on Rails 的热度也就没有那么高了。
但 Ruby on Rails 的价值并没有随之减少,它仍旧十分适合初创企业快速开发中小规模的 Web 应用。如果能认识到这一点,在适合的场景去使用它,就能体会它的价值 。虽然当应用在几百万用户的 Web 应用或者几千人的开发团队时,有开发者遇到了一些困难,但实际上对于一些大规模网站,熟练灵活地应用 Ruby 和 Ruby on Rails 也是可行的。在国外也有很多用 Ruby 和 Ruby on Rails 开发大规模网站的案例,但需要明确是,Ruby on Rails 并不能解决 Web 开发的所有问题。没有任何一种技术能解决所有问题。
日本软件行业发展并不好日本的 IT 产业本身十分依赖大公司,这些大公司本身对于 IT 商业化也不是特别在行。所以说实话日本的软件行业发展得并不太好。
但近几年来,日本出现了很多提供 Web 服务的公司。这些公司大多是中小规模,当然和谷歌、Facebook 这样的巨头不能比,但做得还不错。
话说回来,Software as a production 这样偏保守的 IT 产业特点,的确在商业上不是很有利。总体而言,日本软件行业相对之前来说还是有所进步,之前日本的 IT 产业里创业公司不多,近年来有所增加。
注:日本与中国同在东亚文化体系下,但在软件行业,二者之间差别迥异,尤其是在软件行业的商业化方面,日本距离中国乃至世界都有不小差距。但比较有意思的一点是,日本的顶级技术人物并不在少数,比如本文主人公 Ruby 之父松本行弘,同样还有 Jenkins 之父川口耕介等。另外一点值得称道的是,日本开发者的编程书籍写得特别好,很多国内开发者学习某个语言、框架,都是通过日文编程书籍进行。
总加班的人,很难做出创新与创造我从事开发工作已经超过 30 年了。在我刚毕业的时候,日本加班现象比较严重,我当时常常听人说一周加了 100 多个小时的班。这是 30 年前的情况了,一般来说加班有两种人:一种是因为可以拿到加班费,还有一些人是因为工作效率低下而加班。
这两种都是不可取的。作为一个开发者来说,应该尽量提高自己的工作效率,在单位时间内为公司提供尽量多的价值,同时公司也为开发者提供丰厚的报酬,这样是比较理想的状态。还是不要加班比较好啊(语重心长)。
我最开始开发 Ruby,是工作比较闲的时候。当一个人很忙的时候,是基本不可能去创造一个新东西或者搞出什么创新来的。做开发可以改变世界,这是软件开发这个职业的迷人之处。从这个角度讲,提高自己的工作效率,不加班,拥有自由的时间。利用自己的时间创造新的东西,做一些创新性的工作,这才是正道,希望这样的人越来越多,也希望鼓励这种文化的公司越来越多。