Ruby之父松本行弘的编程人生
生平:
松本行弘(Yukihiro Matsumoto),1965年4月14日出生于日本鸟取县。1984年,就读于筑波大学第三学科信息学系。2年后休学,成为末日圣徒耶稣基督教会的宣讲师。大学复学后,加入中田育男教授的研究室。1990年大学毕业。后在岛根大学攻读博士课程,修满学分后退学,未获学位。
现任株式会社Network应用通信研究所研究员、乐天株式会社乐天技术研究所研究员、Ruby association 理事长、Heroku首席构架师。
推荐阅读: 《松本行弘的程序世界》
经历篇:
高中时代:用自己设计的语言编程
第一次接触电脑,是小学6年级。父亲给我买了一个口袋型电脑L-Kit16,当时真是激动坏了。到了初中3年级,父亲又给我买了Sharp PC-1210,这个时候我第一次知道“编程”这个概念。只要发出指令,计算机就能按照你的指令进行操作,真是有意思极了!
我的父亲,是建筑公司的一个普通的上班族。他之所以买电脑,是用来计算建筑数据的。没想到这两台电脑成了我的玩具(笑)。
回忆起小时候,感觉一天到晚都在看书。我家前面有一个书店,我天天都泡在那里。有时候朋友来玩,我让他到家里来,他却指着书店说:“那不是你家吗?”那时候什么都看,科幻小说呀,漫画呀。百科全书全都记在脑子里。总之就是特别喜欢文字。实在没东西看,就看药品的说明书(笑)。
上了高中之后,就迷上计算机了。成天看计算机杂志。能让计算机按照自己的指示来运行,这比什么都有意思。特别是对编程语言非常感兴趣。当时对汇编语言、Basic都不喜欢,不想用它们来编程(笑)。于是我就开始自己发明语言,然后用这种语言来编程,写在笔记本上。不过这本笔记已经不知道去哪儿了,真遗憾。当时连语言的名字都想好了。当然了,不是Ruby啦。不好意思说,哈哈。
大学时代:不是去图书馆就是去研究室
大学我考上了信息科学学院。在那里我接触了许多在书中看到但从未使用过的软件和语言。大学里的老师都是我高中读过的书的作者,简直太不可思议了。不过,研究室里我是最不听话的,老是猫在那里设计自己的语言(笑)。
当时是日本泡沫经济崩溃的年代,但是我一点儿都没有闲着。整天泡在图书馆里,看了许许多多书。休息的时候就去电影院或者是书店(笑)。我不擅长运动,也不关心身边的人都在干什么。我从小就喜欢读书,虽然最近拜网络所赐,读得少了(笑)。阅读各领域的书籍,对我的成长影响很大。 另外,我还常常关在研究室了。比如通宵在研究室里弄电脑,到了早上回家洗一下澡,然后再到研究室去(笑)。当时是80年代后期,研究室里已经连上网络了,我常常看BBS、新闻什么的。能接触到很多聪明的人物,觉得非常有意思。
当时是计算机的黎明期。我父亲是反对我考信息科学学院的。“什么计算机,什么编程,当个兴趣就得了。”不过我真是太喜欢计算机了。未来的出路我从未考虑过。可谓是义无反顾了。
经济不景气,开始开发Ruby
1990年毕业之后,我进了一家软件公司。我找工作有一个原则:坚决不在东京工作。我从小在农村长大,不喜欢人多的地方。花1、2个小时去上班,那简直不可想象。我其实更适合在小地方工作,不过那样的话可以选择的公司就比较少。后来遇到滨松一家软件公司招聘,我就去了那里。
我的主要工作是公司内部OA软件的开发。当时的电子邮件只能发送文字,我就弄一个可以粘贴附件的软件。有意思。公司一般会给我一个大致的范围,然后让我自由地去发挥。因为喜欢这个工作,所以常常加班到很晚才回家。当时的梦想就是一辈子做一个程序员。即使将来当爷爷了,也要继续工作。
过了几年,泡沫经济崩溃的后续影响开始显现出来。公司的业务一下子少了许多。时间非常充裕,于是我就想自己干一点事情,开始开发Ruby。这些我都是在公司弄的,也和同事交流过,同事亦给我许多帮助。
1年之后,我去了另一家公司,叫做名古屋CAD vendor。因为原来那家公司的经营状况已经非常不好了。虽然我对工作很满意,环境呀、人际关系呀都很好,不过当时我结婚有了家庭,考虑的东西就会多一些。万一公司倒闭了,那就比较惨了。而且我也想趁自己比较有优势的时候把自己推销出去。当时能做面向对象的脚本语言的人还是比较少的。
1995年,松本行弘将Ruby公开于众。反响极其热烈。
理念篇:
还是当怪才比较好
很多人都比较奇怪,我的数学怎么会那么差。高中时我甚至考过全班最低分。“擅长计算机的人数学就一定好”,这只是人们的臆想而已。
在日本的教育体制下,学生都被培养成面面俱到可又面面平庸的“综合型”人才。不过,我遇到的成功人士,大多都是一些在某些方面特别强,但在某些方面特别差的人。我的数学从来就是1(满分为10分),一旦到了程序语言的考试,我则有取得1000分的自信(虽然满分为100分)(笑)。 每个人的能力都有上限,综合型人才往往是全面发展,而那些怪才往往专注于磨练他的专长。这样的人走上社会之后,更容易成功。
我开发计算机语言的初衷
所谓软件,其目的就是让计算机为人类工作。正因为人类的大脑有一定的能力限度,所以需要让计算机承担大部分的工作,让人脑空出来去解决更难的问题。因此我开发了ruby这样面向对象的脚本语言。
我为什么不自己创业
我是一个数学很差的人(笑)。让我算钱,就更差了。很多人都会问我为什么不自己做公司,这是因为我实在不擅长。我现在的工作,能让我自由、专注地开发程序。这样就足够了。
编程人员不需要擅长数学
编程人员要做的其实就是倾听客户需求,写下来,然后借助计算机语言让计算机去执行相应的任务。这哪里需要数学嘛?大家不要被表象所迷惑。算术反正有计算器,不用愁。而在计算机的世界里,比数学更重要的,是作为人本身所需要的一些技能。比如倾听能力、理解力等。其中最重要的是沟通能力。
编程是一种体育运动
很多人年轻时都热衷于体育运动,有些人上了年纪依然热衷。很不巧,我从小就不擅长体育,不过我能理解那些体育爱好者的感受。体育能够使人生变得丰富多彩。而编程其实与体育有着许多共同之处。 可能很多人觉得编程和体育根本不沾边。不过,请你试着想一想,棋类常常被归类为体育运动之一,这是为什么呢?因为它其实是一种脑力运动。
说到编程和体育的共通点
第一,二者都需要通过反复练习才能获得技术上的提升。要想成为一名优秀的程序员,知识和经验都很重要。编程人员常常需要以苦为乐。
第二,编程对美和速度的追求,与体育相似。优秀的程序言对自己“作品”中蕴含的程序之美,非常执着。另外,程序员在进行性能调优时的测定行为,以及对自我瓶颈的突破,和游泳以及田径选手有类似之处。
编程是一种兴趣
在日本,棒球爱好者可谓多如牛毛,可是真正成为专业棒球手的却是屈指可数。大多数人都是因为兴趣才接触棒球的。同样,有许多人爱好编程,于是世界上诞生了许多开源软件。同时,解决程序bug的过程,和解谜的过程一样,都是充满惊喜的。
不过和专业的体育选手不同的是,很多专业程序员并不是因为喜爱编程才干上这一行的。这一点,着实是比较悲哀的事。
编程是一种交流
在大家的印象里,编程其实就是坐在计算机前敲打键盘。不过这个工作其实非常人性化。至今依然没有出现能够自我编程的计算机,这也说明了编程是一种人类活动,甚至可以说,只有“人”才能编程。 此外,程序编写出来是供给人类使用的。理解人的追求、人的感受,对于编程人员来说是非常重要的。另外,当一个团队联合进行编程工作时,团队成员之间的沟通能力也是不可或缺的。
编程是一种创造
多年来,我对编程的热爱从未有丝毫减少。其中最重要的原因是:编程是一种创造性的工作。 只要有一台计算机,就能从无到有,构建出一个新的世界。编程的世界中,没有重力、因果等等现实世界中的制约因素。如此自由的创造性活动,除编程外,别无他选。我能通过编程,创造出一个我想象中的世界。这是编程最大的魅力。
编程是一生的事业
和许多活动相比,编程不需要体力。如果你不去那些彻夜加班的公司,那基本上年龄和体力都不是问题。 编程更需要的是知识、经验、判断力等等,这些都不会因为年龄的增长而退化。换句话说,编程是可以干一辈子的。这一点,和那些专业体育选手略有不同。
日本有一个说法:“35岁是程序员的退休年龄”。我的身边的确有许多30岁左右就渐渐远离编程的朋友。与其说是因为他们能力低下,不如说是社会因素使然。在日本的IT界,优秀程序员的价值没有得到充分的认可,再加上论资排辈的传统以及职业价值的不平衡,35岁成为一个分水岭。