Ruby之父:写Ruby时工作特别闲,总加班的人很难做出创造-程序员宅基地

上个月 Ruby 之父松本行弘来到中国参加 Ruby Conf 大会,期间他接受了二叉树视频的采访,我们很荣幸获得了二叉树视频的授权,转载了这篇文章,希望各位读者看到一个不一样的松本行弘。

视频丨二叉树团队

编辑丨小智

翻译丨乐馨

在近日于上海召开的 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 next

Ruby 团队正在开发 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,是工作比较闲的时候。当一个人很忙的时候,是基本不可能去创造一个新东西或者搞出什么创新来的。做开发可以改变世界,这是软件开发这个职业的迷人之处。从这个角度讲,提高自己的工作效率,不加班,拥有自由的时间。利用自己的时间创造新的东西,做一些创新性的工作,这才是正道,希望这样的人越来越多,也希望鼓励这种文化的公司越来越多。

 后记

虽然跟松本行弘先生的交流只有一个小时左右的时间,但我们已经收获满满。穿着格子衫、牛仔裤背着双肩电脑包的他给人一种十分亲和的感觉。日本人特有的礼貌让我们在采访过程中非常舒适,反倒是他对着镜头开始时有些羞涩、紧张。随着谈话逐渐深入,讲到技术细节、趣事时,松本先生开始眉飞色舞、手舞足蹈,完全忘记了镜头的存在。

Martz 新书推荐:

640?wx_fmt=png

揭秘大师级程序员的思维方式

640?wx_fmt=png

作者:[日] 松本行弘 

译者:郑明智

Ruby 之父全新力作,学习大师级程序员的思维方式。本书全面公开语言设计的秘诀,一边教你设计编程语言,一边帮你解析隐藏在各编程语言背后的设计缘由。最重要的是,还能听故事:语言设计与实现过程中的纠结与取舍,不省略各种试错细节,有趣又有料!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/turingbooks/article/details/102512793

智能推荐

刷题_输入一串由大小写字母组成的明文字符串(无空格,最多60个字符),将明文每个字母循环-程序员宅基地

文章浏览阅读216次。1."""NAME : 字符串最后一个单词的长度.pyAuthor: WDate: 04/05/18Connect: [email protected]: 题目描述:计算字符串最后一个单词的长度,单词以空格隔开。输入描述: 一行字符串,非空,长度小于5000。输出描述: 整数N,最后一个单词的长度。示例1: 输入:hello world 输出:5..._输入一串由大小写字母组成的明文字符串(无空格,最多60个字符),将明文每个字母循环

java.lang.reflect.InvocationTargetException什么意思-程序员宅基地

文章浏览阅读1.8k次。一般就是转换的问题,在SQL用别的list<…>接收的时候会报错_java.lang.reflect.invocationtargetexception

C语言超市收银_c语言超市收款系统代码-程序员宅基地

文章浏览阅读3.6k次,点赞7次,收藏50次。void menus();//主菜单函数void init();//初始化库存void saleCommodity();//购买商品void commodityMenu();//商品列表void repertory();//查看库存情况void printLog();//打印商品列表void add();//补货void GetTime();//打印时间......_c语言超市收款系统代码

javascript中的for...of循环_js for循环 let of-程序员宅基地

文章浏览阅读1.6k次,点赞3次,收藏8次。for...of循环这个直接看代码吧1.遍历数组 var arr = [1,2,3,4,5]; for(let val of arr.values()){ console.log(val) } //1 //2 //3 //4 ..._js for循环 let of

2100306-83-8,NH-bis(PEG2-propargyl)具有两个末端炔丙基和一个氨基的多支化连接物_含有炔基和氨基的化合物-程序员宅基地

文章浏览阅读58次。英文名称:NH-bis(PEG2-propargyl)分子式:C14H23NO4分子量:269.3CAS:2100306-83-8纯度:≥95%结构式:用 途:仅供科研实验使用,不用于诊治外 观:粘稠液体或者固体粉末,取决于分子量注意事项:取用一定要干燥,避免频繁的溶解和冻干溶解性:溶于大部分有机溶剂,如:DCM、DMF、DMSO、THF等等。在水中有很好的溶解性。产品简介:NH-双(PEG2-炔丙基)是一种具有两个末端炔丙基和一个氨基的多支化连接物。炔丙基..._含有炔基和氨基的化合物

几个Python小案例, 爱上Python编程!_python编程能力提升代码实例-程序员宅基地

文章浏览阅读420次。Python是一种面向对象的解释型编程语言,源代码与解释器CPython遵守GPL协议,Python语法简洁清晰。语法简洁清晰,那么我们用少量的Python代码能做哪些有趣的东西?温馨提示:文末必看。一、画爱心表白1、图形都是由一系列的点(X,Y)构成的曲线,由于X,Y满足一定的关系,所以我们就可以建立模型,建立表达式expression,当满足时,两个for循环(for X in range;for Y in range)就会每行每列的打印。2、Python代码与注释:理清思路一行代码实现:_python编程能力提升代码实例

随便推点

Socket Websocket 客户端和服务端实现_websocket4net-程序员宅基地

文章浏览阅读1.3k次。最近在写一个上位机,用到了Websocket,这里就整理一下,顺便把Socket的东西也整理的了,方便以后查阅。_websocket4net

centos安装docker18.09_centos 源码安装docker18.09-程序员宅基地

文章浏览阅读906次。yum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum install -y docker-ce-18.09.0 docker-ce-cli-18.09.0..._centos 源码安装docker18.09

关于图片格式转换(png、jpg转tif)_python jpeg图片转tif-程序员宅基地

文章浏览阅读1.1w次,点赞9次,收藏41次。关于图片格式转换(png、jpg转tif)看来网上很多文章,图片格式的转换有opencv库和PIL库,由于只是简单对图像进行格式转换,所以选择了PIL库(Pillow支持最新的3.x版本)进行相应的转换工作。相比之下,PIL库更加方便快捷。简介PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python..._python jpeg图片转tif

pygame.error: Couldn't open images\ship.bmp的解决办法_phyhon找不到images\ship.bmp-程序员宅基地

文章浏览阅读2.7w次,点赞28次,收藏16次。在《python编程:从入门到实践》这本书中的《外星人入侵》的项目里有如下代码:import pygameclass Ship(): def __init__(self,screen): """初始化飞船并设置其初始位置""" self.screen = screen # 加载飞船图像并获取其外接矩形 self.image =_phyhon找不到images\ship.bmp

2021-06-15 计算机网络基础————osi参考模型_osi参考模型是为了解决网络中的硬件和软件的标准化而产生的-程序员宅基地

文章浏览阅读210次。一、OSI参考模型 开放式系统互联参考模型(Open System Interconnection ,OSI),是国际标准化组织(ISO)为了实现计算机网络标准化而_osi参考模型是为了解决网络中的硬件和软件的标准化而产生的

安卓打开相机相册功能实现,并通过SpringBoot对接Retrofit2上传图片(@RequestBody转变为MultiPartFile全流程,低门槛实现系列)_手机端调用springboot上传图片接口-程序员宅基地

文章浏览阅读4.1k次,点赞7次,收藏19次。安卓打开相机相册,通过SpringBoot对接Retrofit2上传图片(@RequestBody转变为MultiPartFile全流程,低门槛实现系列)面向小白,大佬勿进。面向小白,大佬勿进。面向小白,大佬勿进。面向小白,大佬勿进。面向小白,大佬勿进。面向小白,大佬勿进。面向小白,大佬勿进。面向小白,大佬勿进。面向小白,大佬勿进_手机端调用springboot上传图片接口

推荐文章

热门文章

相关标签