- 原创 2016-08-05 刘延栋软件那些事儿
- 老婆带孩子去回娘家一个月,肯•汤姆逊自己在家写了4200行代码,这就是第一个版本的Unix,其中43个系统调用至今仍在使用...
- 文 | 刘延栋
一辆深蓝色的甲壳虫轿车,飞奔在尼米兹高速公路上,开车的司机是一个年轻的大学生,他一边开车,一边翻看一本厚厚的书。
这本书是当时的电脑巨头IBM的一份程序员手册,这个叫肯•汤姆逊的学生,刚刚了开了100公里,从加州大学伯克利分校到圣何塞的办事处,领取了一份IBM 360大型机的程序员手册。此前,他已经连续打了半月的电话,询问IBM的办事处,这本书有没有到货。
今天,他得到了确切的消息。于是驱车到圣何塞领取这本书。
拿到手册以后,他迫不及待的边开车边阅读。后来,他功成名就,在2000年,接受采访的时候回忆说:我当时太兴奋了,差点就出了车祸。他说,一路上,他确信了一件事儿,IBM的这台360大型机,是彻头彻尾的垃圾。
多年以后,汤姆逊依然掩饰不住自己对IBM的鄙视,他以嘲讽的口吻对IBM的销售人员说:你们产品最好的部分,就是这些蓝色的包装盒。
当时的汤姆逊才21岁,他一针见血的指出了IBM 360的设计失误,他说,IBM完完全全忽略了和计算机打交道的人——程序员和工程师——他们对我们太傲慢无理了。
事实证明了这个只有21岁年轻学生的判断还是很独到的。
IBM 360这个机器是计算机历史上最大的一次赌博,IBM为了这台大型机,决定招聘6万名新员工,新盖5座工厂,但是整个项目还是不断的延迟。作为该机器的项目经理,弗瑞德•布鲁克斯,根据研发IBM 360的经验,写了一本书叫《人月神话:软件项目管理之道》,这本书现在仍然是计算机系学生必读的书目之一,这本书记录了人类工程史上一项里程碑式的大型复杂软件系统开发经验。
在1969年,当年这个边开车边读书开了100公里的学生,和贝尔实验的两位同事,一位叫丹尼斯•里奇,还有一位叫Rudd Canaday的家伙,开始秘密谋划一个新的操作系统。1969年的夏天,肯•汤姆逊的老婆要带着他们的小孩回娘家,所以,肯•汤姆逊有一个月的时间,重新体验单身汉的快乐,他在一个月内,给一台废弃的PDP7写了一个操作系统,这就是后来的Unix。
第一个版本的Unix,只有4200行代码,其中的34个系统调用,到现在依然在使用。我觉得关于Unix,Linux,BSD以及Mac操作系统的故事非常的精彩,所以,我要把这个故事完整的记录下来。虽然在现在这个读图的年代,写很长的文章,非常的格格不入。
这一系列的文章会很长,我分成好几期。为了照顾微信的读者,每一期都是一个相对独立的故事,也会有个独立的文章标题。这一系列文章的标题里,都会有Unix这个单词。
在1943年,日后创造出Unix操作系统的肯•汤姆逊在新奥尔良出生,他的父亲是海军飞行员,他从小就跟着父母东奔西走,去过很多的地方,很多的国家。从小,肯•汤姆逊就对机械,电子产生了浓厚的兴趣,喜欢冒险。
他最崇拜的人就是他当飞行员的父亲,在他48岁的时候,他在俄罗斯花了12000美元,体验了一把他父亲开战斗机的感觉。他开的是俄罗斯的米格29喷气式战机。在空中做各种惊险的动作,翻滚,失速,画圆,做响尾蛇的避让动作,空中急刹车。
肯•汤姆逊是一个不善言辞的家伙,他一贯追求简单。在2008年,一群计算机爱好者,把第一个版本的Unix源代码找来,对着源代码,实现了一台当初PDP的机器,并且让这些源代码重新运行起来。当这些计算机爱好者兴奋的告诉肯•汤姆逊这件事以后,肯•汤姆逊只是回复了一个单词,amazing。
他一贯如此,安静,简单,不善言辞。但是,在他48岁,开上米格29翱翔天空以后,这个48岁的大男孩也许想起了他父亲当年翱翔天空的样子。一贯不善言辞的他,写了一篇博客,来记录这件事情,其中,他写道:起飞了,喷射引擎全速运转,我感觉有人在踢我的肾。
在2000年12月,57岁的肯•汤姆逊离开了贝尔实验室,正式退休,他成了一名飞行员。
上高三的时候,他父亲从意大利那不勒斯空军基地调回美国本土,回到圣地亚哥海军基地。他父亲年轻时候从俄克拉荷马大学辍学,因为家庭贫穷,因此,他的父亲决定要让他的孩子都能上大学。汤姆逊回忆说:我上大学没有问题,问题是我要选择上哪一所?
最后,这个家庭并不富裕的孩子选择了学费低廉的加州大学伯克利分校,虽然录取他的还有包括麻省理工在内的诸多私利大学。在大学的时候,他选择了电子工程专业,但是他更喜欢呆在计算机中心。
他对各种编程都非常着迷,他这样形容编程行业,这就像盖房子不需要购买水泥,你自己创造你自己的世界,你拥有这一切,但是却不用离开自己的房间。
和Java的创始人高斯林一样,汤姆逊也喜欢玩一字棋,并且在计算机上编写了一字棋的游戏,他和电脑对战。直到,他认识了伯克利分校的一个数学教授,叫波利坎普,接下来的几个月里,汤姆逊屡战屡败,但是他并没有气馁,开始编写计算机软件辅助他,有了电脑的帮助,汤姆逊的棋艺大增,但是,还是从来没有赢那位数学系的教授。
在一次采访中,汤姆逊说,我快气疯了,我从来没有赢过他,我用电脑来计算,都从来没有赢过他。在一字棋上,汤姆逊虽然没有赢波利坎普,但是,波利坎普这个数学教授却对汤姆逊青眼有加,他推荐汤姆逊进入当时鼎鼎有名的贝尔实验室。
汤姆逊进入的是贝尔实验室的计算机科学中心,这个中心在当时的贝尔实验室里并太不出名,但是没关系,它就要出名了,因为,这个中心招聘了汤姆逊和里奇,这两个家伙,日后让贝尔实验室计算机科学中心名声大噪。
肯•汤姆逊在2006年进入Google工作,开发了Go语言,目前仍然在Google公司工作。
在1983年,汤姆逊和里奇因为Unix被授予图灵奖。
这里引出Unix的另一个作者,丹尼斯•里奇,他是一个平易近人的人,在2003年,一名17岁的瑞典少年,发了一封邮件给里奇,问能否接受采访。这个获奖无数的科学家,欣然答应了这个少年的要求。
他从哈佛大学毕业,他用C语言实现了Unix,不幸的是,他于2011年10月12日,因病去世,享年70岁。他的死讯时2011年10月12日由他的好友Rob Pike发布的。由于他一直未婚,2007年退休以后,隐居在新泽西,没人知道他具体的死亡日期。
看起来有些伤感的故事,他去世以后,也没有太多人关注。在2011年的时候,我写过一篇很长的文章介绍他,也没有人看,后来我都找不到了。
作为我微信公众号——软件那些事儿——关注者的福利,我贴一张2002年里奇的桌面。
在2002年7月9日,应一个网站要求,大家想看一下里奇电脑的桌面。他就很愉快的发了一张截图。从这个截图上,我们可以看出,他用的是windows NT 4.0的操作系统。在桌面上开了一个term,这个term的名字叫drawterm, 这个term连接到一个Plan 9的服务器上,所有的工作都在那个服务器上工作。
有一次,一个程序员问他: 一个程序员从新手成长为精通C语言的开发者,并能写出优秀的代码,据您的经验需要多长时间?
他回答:我不知道,我不需要学习C语言。
因为C语言是他创造的,当然不需要学习了。
下一期,我将会介绍C语言的作者,Unix的发明者之一,Plan 9的发明者之一,丹尼斯•里奇的故事。