写点什么

Ruby 之父:写 Ruby 时工作特别闲,总加班的人很难做出创造

2019 年 9 月 12 日

Ruby之父:写Ruby时工作特别闲,总加班的人很难做出创造


在近日于上海召开的 RubyConf China 站上,InfoQ 有幸采访了 Ruby 之父松本行弘先生。松本行弘先生是 Ruby 语言的设计者,投身编程行业已逾三十年。作为一门编程语言的创造者与推动者,他是怎么看待对于 Ruby 语言的褒奖与批评?又是怎么看待 Ruby 与 Java 语言的对比?对于日本的 IT 产业现状与 996 的加班问题,他又抱有怎样的看法?


00:00 / 00:00
    1.0x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.5x
    网页全屏
    全屏
    00:00


    极客档案人物专题纪录片


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


    后记

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


    一个真实、可爱、鲜活的技术人。


    2019 年 9 月 12 日 18:166634
    用户头像
    小智 前 InfoQ 主编

    发布了 402 篇内容, 共 321.9 次阅读, 收获喜欢 1774 次。

    关注

    评论 4 条评论

    发布
    用户头像
    佩服一个刚毕业没多久的学生,居然能创建一门新的语言
    2019 年 09 月 19 日 10:38
    回复
    用户头像
    学习大师的思想境界
    2019 年 09 月 19 日 09:08
    回复
    用户头像
    大师果然看的通透.
    2019 年 09 月 15 日 21:18
    回复
    用户头像
    格子衬衫
    2019 年 09 月 14 日 22:30
    回复
    没有更多了
    发现更多内容

    OpenKruise 2021 规划曝光:More than workloads

    阿里巴巴云原生

    阿里云 开源 容器 云原生 调度器

    案例展示自定义C函数的实现过程

    华为云开发者社区

    数据库 数据 C语言 字符串

    Java并发编程:AQS的公平性

    码农架构

    Java Java 分布式 java 并发

    如果腾讯、阿里是弱生态,那么谁是强生态?

    ToB行业头条

    架构训练营 - 第 13 周课后作业 - 学习总结

    Pudding

    分布式身份:重新定义你的“身份”管理

    华为云开发者社区

    区块链 数据 隐私保护 分布式身份标识

    anyRTC 2020年12月SDK更新

    anyRTC开发者

    uni-app android 音视频 WebRTC sdk

    深圳区块链交易所开发、数字货币交易平台开发

    W13902449729

    深圳区块链交易所开发 数字货币交易平台开发

    计算机专业必看!难道Android真的凉了?大厂内部资料

    欢喜学安卓

    android 程序员 面试 移动开发

    全网最全原理讲解!如何试出一个Android开发者真正的水平?已开源

    欢喜学安卓

    android 程序员 面试 移动开发

    亿级流量峰值没在怕,“缓存”技术来减压!

    博文视点Broadview

    架构师训练营 - 大作业二

    Pudding

    IT2.0:中台构建还应从企业业务实际出发

    华为云开发者社区

    区块链 分布式 安全 数据 身份安全

    架构训练营 - 第12周课后作业 - 学习总结

    Pudding

    2020 — iOS 面试败北感悟

    iOSer

    ios iOS Document 大厂面试 iOS面试 底层知识

    Appium的安装及简单的使用介绍

    行者AI

    人工智能

    细节拉满!美团首推“百万级”Redis进阶笔记究竟有什么魅力

    程序员小毕

    数据库 nosql redis 分布式 性能

    万字长文聊缓存(下)- 应用级缓存

    Silently9527

    缓存 缓存击穿 Caffeine 缓存架构

    架构师训练营 - 大作业一

    Pudding

    花了19998买的学习教程!2021年Android技术下半场在哪?震撼来袭免费下载!

    欢喜学安卓

    android 程序员 面试 移动开发

    滴普技术荟-云原生基座OpenKube开放容器实践(一):如何理解Linux network namespace ?

    滴普科技2048实验室

    Linux

    架构师训练营 - 第 13周课后作业(1 期)

    Pudding

    滴普技术荟-云原生基座OpenKube开放容器实践(二):理解linux虚拟网络设备veth

    滴普科技2048实验室

    Linux

    入职阿里!全靠刷明白了这份Java面试合集(分布式+Dubbo+线程+Redis+数据库+JVM+并发)

    Java架构之路

    Java 程序员 架构 面试 编程语言

    Linux的进程pid编号极限

    程序员架构进阶

    Linux 进程

    从根上理解高性能、高并发(三):深入操作系统,彻底理解I/O多路复用

    JackJiang

    网络编程 高并发 高性能 即时通讯

    云原生2.0时代,华为云DevOps立体运维实践

    华为云开发者社区

    DevOps 运维 云原生 华为云

    测开之函数进阶· 第7篇《装饰器装饰类,通用装饰器,有啥区别呢?》

    清菡

    测试

    抽象照进现实

    型火🔥

    抽象 视觉化

    这些常用ETL任务调度框架组件,你都知道几个?

    会飞的鱼

    大数据处理 kettle 海豚调度 调度引擎 调度式分布

    Vue 3 组件开发:搭建基于SpreadJS的表格编辑系统(环境搭建)

    Geek_Willie

    Vue SpreadJS vite

    「中国技术开放日·长沙站」现场直播

    「中国技术开放日·长沙站」现场直播

    Ruby之父:写Ruby时工作特别闲,总加班的人很难做出创造-InfoQ