编者按:2 月 24 日,对普通人来说没什么特殊,就这样普通的一天,对松本行弘来说却意义非凡,由于他开始动手开拓一门新的编程措辞,从此他便多了一个新身份——Ruby 之父。图灵教诲征集了不同期间读者与 Matz 的合照,做成了照片墙,感谢这么多年 Ruby 的陪伴。祝 Ruby 27 岁生日快乐,也希望它之后能越来越好。
本期图灵访谈带您走进松本行弘的故事(来源:图灵教诲,零零妹整理)。

Ruby是马拉松式开拓出来的
如今,大家常常会把 Ruby 和 Java 放在一起比拟,辩论不休。在外界看来,Java 的大名彷佛金光闪闪,比较起来,Ruby 就显得低调不少。实在,它们是同一年“出身”的。
1995 年 Sun 公司将 Oak 措辞改名为 Java,正式向市场推出。Sun 公司大肆宣扬,许诺这种措辞可以“一次编写,到处运行”,它看上去很可能成为未来的主宰。
而在日本一家不有名的软件公司,由于泡沫经济的缘故原由,公司业务不太景气,职员松本行弘顺手开拓出了 Ruby。那是 1995 年,这场有关 Ruby 的马拉松,正式拉开序幕!
刚动手开拓Ruby的Matz
初中时的松本行弘把爸爸买来打算建筑数据的电脑,当成了自己的玩具。高中时,喜好看书的他,开始翻看打算机杂志,即便他对编程措辞有着浓厚的兴趣,他还是不喜好汇编措辞,Basic 措辞也不喜好。“我一定要利用这些现成的编程措辞吗?”他这样问自己。
由于高考时打算机还处在黎明期,父亲反对他考信息科学学院。可他说:“自己真是太喜好打算机了。未来的出路从未考虑过,可谓是当仁不让了。”大学时,日本经济正处在泡沫经济崩溃的年代,可松本行弘没有一点懈怠,他满满的激情亲切穿梭在图书馆和研究室之间。
松本行弘的第一份事情是在滨松的一家软件公司。由于自己从小在屯子终年夜,不喜好人多的地方,也不想每天花 1-2 个小时上班。他曾说过:“找事情有一个原则,那便是武断不在东京。”
他很喜好这份事情,环境很宽松,卖力开拓公司内部的 OA 软件,他有足够的韶光可以自由地发挥。当时的电子邮件只能发送笔墨,他就弄一个可以粘贴附件的软件。由于喜好,以是常常加班到很晚才回家。他那时的梦想便是一辈子做程序员。纵然将来当爷爷了,也要连续事情。
起初,松本行弘为了设计一种好用的编程措辞作为自己提高效率的工具。虽然如今的编程和软件设计都会自然地考虑人性化的角度,但是在当时,打算机编程刚开始发展的时期,这种想法非常罕见。他清晰地记得那个最初的韶光点——1993 年 2 月,他决定开拓自己 17 岁时在条记本上写下的措辞。
只管同事也给了他许多帮助,这仍旧是他独自的战斗,尤其是在最开始的三年。
他回顾:“确切地来说是 2 年 10 个月,Ruby 险些没有用户,我开拓的东西得不到任何反馈,那个时候我就产生自我疑惑。啊,为什么我要干这种没故意义的事情呢?觉得没有什么动力往下开拓了。由于你知道开拓一门编程措辞还是蛮繁芜的,不是一两天能完成的。我花了 6 个月的韶光才让 Ruby 写出了 Hello World,用其他现成的措辞的话 10 秒钟就能写出来(笑)。”
2002年的Matz,Ruby在全天下崭露锋芒
只管他会疑惑自己,但是没有放弃。他说:“我要怎么办呢?我每天给自己定一个小目标。比如本日完成一个函数的打印。马拉松选手们是这样做的,他们的目标每每是‘跑到下一个电线杆那儿’。通过完成这样一个个小目标,终极跑到了终点。现在回过分来想想,能坚持下来真好啊,如果不这样做现在可能就没有 Ruby 这门措辞了。”
一个基于 Ruby 的框架就此出身
生而逢时,1994 年万维网正式出身,Web 技能不断发展。十年后,Web 2.0 兴起,David Heinemeier H 发明并开源了天下上第一个 Web MVC 框架 Ruby on Rails,引领了做事器端开拓技能的变革,也使得 Ruby 措辞得到了欧美开拓者社区的关注,从此被点燃了加速器,走出日本,大量英文资料开始发展,环球的无数目光开始聚焦于这门幽美的措辞。
有趣的是,2001 松本行弘在丹麦参加 JAOO Conference 时便碰着过 David Heinemeier H,彼时还是志愿者的 David Heinemeier H 还没有开始学习 Ruby,他跟松本行弘一起磋商了编程措辞的话题。谁也没预想到之后 Rails 框架会大火。可谓是奇妙的缘分。
提到 GitHub、Airbnb 和 Twitter 等网站,大家都不陌生,但说到它们的共同之处,你大概要想一想了。没错!
它们都是建立在 Ruby on Rails 之上的。
Ruby 幽美的语法和 Rails 框架轻量、简洁的理念切实其实是天生一对。一个大学生程序员说:“我只用了几分钟,敲了 4 条命令和一个启动项目 Server 的命令,便实现了一个大略的网站揭橥文章的功能。再添加一个 Comment Model 评论模型,一个论坛或者博客就已经完成了,这不便是一个软件工程的大作业吗?
“当别人还在抱着厚厚的将近 1000 页的参考书的时候,我已经将项目做完了。虽说前台显示不怎么好看,但是后台已经写好了,只须要稍加润色就行了。”很快,Rails 框架的热度席卷了全体 Web 开拓领域,Ruby 的人气也水涨船高。尤其是,听说 David Heinemeier H 曾经准备用 PHP 来开拓这个框架,但后来却转向了 Ruby。
松本行弘在总结自己对 Rails 框架的意见时说:“首先是得益于 Web 的快速发展,险些所有的软件开拓平台都在瞄准 Web 这个领域。也便是说,在 Web 上能够开拓的运用变多了,这是一个紧张的背景。其余,Ruby 的上风在于开拓效率比较高。这两点结合起来,我认为便是 Ruby on Rails 成功的紧张缘故原由。”
“Ruby还有一些比其他措辞强大的特性,例如元编程(metaprogramming)、通过猴子补丁(monkey patch)所带来的可扩展性等,David Heinemeier H 正是利用了 Ruby 的这些强大之处,开拓出了 Rails。而对付没有打仗过 Ruby 的人,比如只用过 Java 这种比较‘去世板’的措辞的人来说,会以为‘唉?居然还可以做到这样吗?’,我以为这也是 Rails 成功的缘故原由之一。
“自从 Rails 推出后,很多模拟 Rails 的开拓框架涌现了,比如 Symfony、CakePHP 等(在PHP上实现的),但是 Ruby 所拥有的强大特性 PHP 并非完备具备,纯挚比拟这些开拓框架的话,我还是以为 Rails 更强大一些,David Heinemeier H 选择 Ruby 也正是看重了这一点。
“Ruby 不想阻碍程序员的创造力,David Heinemeier H 正是在此根本上开拓了 Rails 框架,让开发者能快速将构想变成现实,被无数开拓者们追捧。但是,当初创企业进入高速发展期间,Ruby 的上风就变成了劣势,企业须要限定多样性的编程风格,由于此时他们的需求是稳定性和规模化生产的能力。”
有人说 Ruby 最大的优点是灵巧,但同时这也是它不稳定的地方。
像是印证了这个说法,2012 年美国总统大选结果揭晓的那个周二晚上,微博网站 Twitter 遭遇了有史以来最大的访问冲击,做事的负载量陡增,却没让用户感到丝毫的反应迟缓——一些 Twitter 的开拓职员把这归功于公司把后端软件从 Ruby 迁移到 Java 的精确决策。
大家曾以 Ruby 的成熟运用 Twitter 为骄傲,可随着系统规模扩展,Twitter 决定放弃 Ruby on Rails。早在 2008 年他们就开始将后台系统从 Ruby移植到 Scala(被认为是一种 Java 平台),现在他们的前台也移植到 Java了。
前 Twitter 开拓者 Alex Payne 说:“Ruby 善于做很多事情,但对付永劫光的处理过程,尤其是须要大量内存的操作,并不是很在行。”
作为创造者,松本行弘客不雅观地总结了 Ruby 在这方面的劣势。他说:“可以说现在的 Twitter 发展到当初设计上的极限了,毕竟当时,没人想到会有现在的每秒上万这样大的访问量。
“Twitter 刚开始开拓的时候,很多人以为,这种只能写 140 个字的博客有什么意思呢?但 Twitter 出人意料地得到了巨大的成功。在它快速发展的过程中,Ruby 的贡献是相称大的。由于 Twitter 须要增加很多新功能,凭借 Ruby,一个新功能从构思出来到付诸实现,用很短的韶光就能够完成。
“而现在它发展到了瓶颈期,为了搪塞现在越来越大的访问量,Twitter 须要开拓一个全新的架构。不过,即便要重写架构,我以为沿用 Ruby 也是可以做到的吧?(笑)
“在我看来,在网站做事还没有完备成型的时候,最主要的是对需求变革做出快速的反应,这时就须要 Ruby 这样灵巧性比较高的措辞;而在网站得到成功之后,碰着了设计瓶颈,他们的工程师也想要寻衅一些新的东西,就提出要改用 Scala 来编写一个新架构。由于 Scala 是编译型措辞,性能也不错,恰好适宜编写新的架构,以节约一定的资源,我认为这也是很好的一个结果。
“实在,Twitter 转向 Scala 还只是在其核心部分,而在 Web 前端和一些内部工具上还有很多地方在用 Ruby。上个月我还去拜访了一下 Twitter,跟他们的工程师进行了一些互换,Ruby 还是用得很多的哦(笑)。”
27年的坚持,Ruby未来可期
2018 年 2 月,大家为松本行弘举办纪念 Ruby 25 周年的活动,他的两个女儿也特意从东京赶来送上了鲜花和祝福。或许和开拓者松本行弘的性情有关,Ruby 社区的氛围友好而联络,大家一起戴德这 25 年来的坚持与陪伴。
然而,在一片欢庆中,外界有网友质疑:“Ruby 还能坚持到下一个 25 年吗?”
由于 Ruby on Rails 框架的成功,Ruby 在 2012 年的 RedMonk 措辞排行榜上飙升至第五位,该排行榜结合了 GitHub 和 Stack Overflow 上的排名来评估措辞的盛行度。只管 Rails 很受欢迎,但是它面临着越来越激烈的竞争。几年后,随着发展,互联网公司逐渐更关注规模伸缩等问题。2018 年,Ruby 已经 25 岁了,它的排名低落到了第 8 位,乃至有毒舌的网友评论说 Ruby 已去世。
松本行弘已经 50 多岁了。从大学毕业开始,他与 Ruby 一起走过了 25 年。他说,这些年发生了很多事情,但感想熏染最深刻的便是这 25 年的坚持。很多软件的生命周期并不长,一门编程措辞能够坚持走过 25 年,是一件很了不起的事。
到现在,他的初心一贯没有变。Ruby 是开源的,不具有商业性子,只是让更多人利用 Ruby 并不是他的终极目标。他想让更多开拓者以为 Ruby 好用,去享受编程的过程,提高他们的生产效率,才是他的终极目标。
为了做到这一点,他和团队努力优化 Ruby 的性能,Ruby 社区的成员也一贯致力于 Ruby 的推广,这样坚持做下去,他相信 Ruby 会为更多人所用。
他说:“Ruby 有很多特性,我以为最为大家喜好的是它的简洁、高效以及人性化。但同时也有开拓者不喜好 Ruby,由于一旦运用到事情中,由于 Ruby 太灵巧,犯错的概率会随之增大。还有人说 Ruby 很多东西都是在运行时来决定的,比较麻烦。
“这是一个取舍的问题。从利用 Ruby 的角度来说,我个人认为最主要的是灵巧性,当然随意马虎写出 bug 的确很烦,不过我还是想要保留 Ruby 最主要的特性。而且,Ruby 会持续改进,进一步提高开拓效率。”
25 岁后,成熟的 Ruby 将会面临更激烈的竞争,松本行弘为此也做好了准备,他想要坚持 Ruby 通用措辞的地位,优化性能,让 Ruby 广泛运用在不同的开拓领域。不可避免地,它将会再一次和 Java 这个“同龄人”相遇。不过,比较于有太阳打算机系统、甲骨文、IBM 这些大公司支持的 Java,松本行弘须要在 Ruby 的开源属性的根本上考虑它的商业化发展。
他说:“从 2007 年开始,在事情中利用 Ruby 措辞的人逐渐增多。在此之前,许多人仅仅将 Ruby 作为一种兴趣,用它编着玩儿。当他们真正在事情上利用 Ruby 的时候,商业开拓者和利用开源软件的兴趣爱好者之间的抵牾愈来愈明显。“为理解决这个问题,我创设了 Ruby Association。这样可以给商业开拓者供应一个付费的平台,利用起来有了商业保障。这个组织还很小,目前只在日本海内活动。当然创立当初是放眼全天下的。”
2011 年,松本行弘担当了 Heroku 的首席架构师。Heroku 从 2007 年开始开拓,是最开始的云平台之一,当时它仅支持 Ruby,后来被 Salesforce 收购。他们希望能用 Heroku 的资源来推进 Ruby 的发展。
松本行弘说:“以前,Ruby 社区中有些人白天事情,晚上因兴趣而捣鼓 Ruby。而现在到了 Heroku 事情,则一天到晚都能捣鼓 Ruby 了,Heroku 供应了这样的平台。”
Ruby,永久不会停下更新的脚步
松本行弘在条记本上面写下 Ruby 的时候,是打算把它作为脚本措辞的,而在 Ruby on Rails 等框架出身之后,Ruby 得到了 Web 运用开拓措辞的地位。
不过,在开拓领域大家总会相互借鉴精良的特性,当 Ruby 人性化、效率高的竞争上风逐渐被追上,它须冲要破瓶颈,并且寻求如深度学习、云打算、大数据、IOT 等新领域的增长与爆发的机会。
松本行弘说,他想要坚持 Ruby 通用措辞的地位。他把目标拆解成了几个紧张问题,然后一步一步去实现。
一是 Ruby 的性能。什么是性能?最大略的理解便是相应速率和稳定性,比如 Twitter 所面临的因美国大选而陡增的用户访问量。松本行弘不肯望在流量增加之后,开拓者就要被迫从 Ruby 迁移,他决心改进这个问题。
其余是可扩展性,便是当软件变得更大更繁芜时,如果大家能快速并全面地创造 Bug 和缺点,软件开拓的速率就会更快。
松本行弘负责地站在用户的角度考虑,他想要不才一个版本中做出优化。他把这个操持起名叫作“Ruby 3x3”,便是希望下个版本能够跑出 3 倍的速率,这是他为自己设立的寻衅。
如何完成这个寻衅呢?他把问题划分成了几个部分,一是办理 CPU 的性能瓶颈,二是办理内存瓶颈,三是办理 I/O 瓶颈。拆分之后,就可以对症下药。
比如对付 CPU 为瓶颈的情形,VM的性能便是问题所在。他已经随 Ruby 2.6 版一起发布了 JIT(just-in-time) 即时编译器,能在运行时编译 Ruby 程序。在某个以 CPU 为瓶颈的基准测试中,他们不雅观测到的结果是快了将近 3 倍。
松本行弘还和许多中国开拓者沟通过,他们通过剖析,认为瓶颈紧张出在内存。因此,松本行弘也将内存花费量放入了日常改进的要点列表里。还有对付 I/O 是瓶颈的情形。他认为利用多核 CPU 来减少等待韶光是一种方法。因此,为了改进 Ruby 在多核 CPU 上的表现,他也将“如何改进并行实行”作为一个大课题。
松本行弘不愿为理解决面前的困境草率地变动 Ruby 独一无二的特质,但他希望探索 Ruby 未来的更多可能性。
他说:“Ruby 3 并不打算改变措辞本身。我们不想像其他措辞一样,做些‘增加类型声明’之类的事情。我们希望 Ruby 保持原样。我们不是通过改变措辞本身的办法,而是通过增加支持工具的办法办理这些课题。”
为了使 Ruby 能够运用在数据剖析和机器学习领域,他和团队已经做了许多寻衅性事情了,以是,他希望 Ruby 也能用在 AI 领域。还有 IoT 或者说设备的编程,他们正在考试测验通过 mruby,使得 Ruby 能够用在这个领域。
在云打算等领域,松本行弘也取得了一些可喜的进展。
在 2018 年末,拉斯维加斯举办的 Amazon 技能大会“AWS re:Invent”上,官方宣告 AWS Lambda 开始正式支持 Ruby。松本行弘说微软也有类似的做事,彷佛叫 Azure Functions,他期待今后 Ruby 也能生动在这种开拓办法中。还有在云配置、DevOps 等领域,他也希望大家利用 Ruby。
他说:“软件开拓行业有一个笑话,如果你找不到结对编程的伙伴,那就在阁下放一个泰迪熊,一边与泰迪熊说话,一边编程,这会提升你的编程效率。这种方法真的有用,不可思议(笑)。”
他的空想便是供应一个更聪明的像泰迪熊这样的工具。他希望今后,Ruby 会成为人们可以相信的、利用它就可以进行编程的存在。
在眼下这场编程措辞的竞赛中,如何才能不被淘汰?松本行弘明白,比较于有大公司支持的 Java,Ruby 须要结合全体社区的力量,大家要共同努力。
有人可能会问:“Ruby 社区都有谁?”答案是利用 Ruby 的每一个人。
松本行弘与读者合影
松本行弘已经收到了很多“利用这个 gem 的话,Ruby 会更好”这种建议,他说,为了推进这些建议,新的考试测验绝对是必要的。并且,他鼓励大家做些比如“在这个领域我实际地利用 Ruby 了”这样的事情、出一些“如果要运用在这个领域,这部分功能是不足的,修正这部分会更好”这样的主张。他相信开源社区的力量会让 Ruby 更加强大。
他说:“一步一步,在不大幅改变 Ruby 措辞的条件下,我们准备连续改进下去。我不肯望对付某些人来说 Ruby 是不能用的,或者之前明明能用、现在却不能用了之类的事态发生。”
“因此,不要停下脚步,一贯向前是非常主要的。一旦放弃,游戏就结束了,以是我绝不会放弃,我不会做‘放弃 Ruby 的改进’、‘放弃 Ruby 的升级’这种事情。”
推举阅读:
松本行弘 编程措辞的设计与实现
[日] 松本行弘 著,日经Linux 编,郑明智 译
本书由Ruby之父松本行弘在《日经Linux》杂志上的连载整合而成,紧张先容了新措辞Streem的设计与实现过程。作者从设计Streem这门新措辞的动机开始讲起,由浅入深,详细先容了新措辞开拓中的各个环节,以及措辞设计上的纠结与取舍,个中也不乏对其他编程措辞的调查与思考,向读者展示了创建编程措辞的乐趣。从紧张措辞的常见功能到少数措辞的独特功能,穿插对现有措辞特色的先容,干货满满 。巧设“光阴机专栏”,坦言不敷之处及再思考,展现编程大师的“平凡”一壁。