本文约3200字,您将用6分钟了解肯·汤普森的故事。
1983年,图灵奖颁奖典礼,主持人代表美国计算机协会打开了那个写着本年度图灵奖获奖者名字的信封,然后用抑扬顿挫的语调,念出了两个人的名字:
“获奖者是肯·汤普森,丹尼斯·里奇!”
走上舞台,全场掌声雷动。然而只有一人上台领奖——汤普森看向台下的观众,示意大家安静。
“我的搭档正在进行系统的一个优化研究,所以他没能来到现场。我很感谢协会能够授予我们二人如此荣誉,但我不能在这儿呆太久,要快点回去帮忙。”
无数人视若珍宝的荣誉,被汤普森轻描淡写地抱在怀里。主持人还在说着什么,汤普森并不答话,只是不停点头。任谁都能看出他归心似箭。
人们看着他,露出善意的笑。
为什么对这位看上去并不通达的程序员报以如此大的宽容?“因为他是肯·汤普森,了不起的汤普森啊。”
1
新的系统
汤普森出生于1943年。小学时,老师偶尔提起二进制。其他的孩子听得云里雾里,汤普森双眼却骤然一亮。这些无数的0和1如同咒语,飘进了汤普森心中。
在兴趣的驱使下,汤普森做了许多二进制运算。推此及彼,他甚至借助一台十进制的计算器,将计算扩展到了各种进制。
在老师眼里,汤普森从来都不是最乖巧的孩子。他会把同学的午餐牛奶倒在树下喂蚂蚁,也会偷偷把同学的橡皮替换成粘土——但所有老师都承认,汤普森是自己见过最聪明的孩子。
“他的聪明不止于解决那些浅薄的数学题,而是在于创造力——他总是创造性地运用自己学到的知识,然后做出一些令人惊艳的成果。”
事实证明,老师们的评价并无偏颇。他一路边玩边学,轻松考入了加州大学伯克利分校,攻读电子工程学士学位。
虽然大学的课程相较之前要略显复杂,但汤普森仍没将其放在眼里。闲暇之余,汤普森迷上了当时尚属新兴事物的计算机。
每天晚上,趁着机房没人,汤普森便偷偷溜进机房。他用校园内那台在我们看来隶属于“上古世纪”的电脑自学了编程,还编写了游戏,每晚都玩得不亦乐乎。白天去了课堂,汤普森便趴在桌子上睡觉,活脱脱一个“网瘾少年”。
尽管如此,汤普森每门课程的成绩都能够以高分通过。
到了大四,汤普森考虑到自己在专业课上的投入确实不够,就没申请研究生——但一位老教授欣赏他的才华,破例为他申请了研究生,而且成功通过。
汤普森大为感动。他一改本科时期的玩世不恭,兢兢业业地搞起了电子工程学相关的学术。天才的兢兢业业效果斐然。只用了一年,汤普森便同时拿到了电子工程和计算机科学的硕士学位。
大部分同龄人做到这一点,需要至少6年甚至更久。
研究生毕业后,汤普森的才华惊动了当时大名鼎鼎的贝尔实验室,并向他伸出了橄榄枝。
但当时的汤普森眼高于顶。在他的心里,自己这么年轻、才华横溢,又有头发,注定是要改变世界的人。怎么可以屈居这小小的实验室呢?
但是,在贝尔实验室的再三邀请之下,他还是勉强答应去参观一下。
这一参观不要紧,汤普森发现,实验室里有一面墙上挂满了人物画像,听了介绍才知道,这些人分别是信息论发明者、晶体管发明者、射电天文学创立者……这些推动人类文明进程的人,竟然都来自贝尔实验室。
汤普森的脸色从玩世不恭慢慢变成肃然。结果同样显而易见:他接受了贝尔实验室的Offer。
加入实验室后的汤普森与丹尼斯·里奇搭档,着手进行名为Multics系统的开发工作。
那个时代的计算机系统尚处于批处理的荒蛮阶段,人们只能在笨重又缓慢的大型机器上工作,需要先将程序卡片装入设备,再等一个小时才能得到运算的结果。
因此,贝尔实验室联合麻省理工学院,以及通用电气公司,想建立一套可以多人使用、多任务、多层次的Multics操作系统。
然而,对于大多数天才科学家而言,自己的发明必须要尽善尽美,不能有分毫瑕疵——这导致系统的开发周期被一拖再拖。加上没有出色的项目经理,短期内,各方看不到任何产出。
1969年的时候,贝尔实验室忍无可忍,决定退出这个项目。
对于实验室而言,退出是人之常情。但让汤普森失望的是,自己喜欢的名为“星际穿越”的游戏,是基于Multics操作系统运行的。
项目可以终止,游戏不能不玩。汤普森决定,自己想想办法。
2
飞行
汤普森的办法是,既然现在的操作系统不能玩,那干脆重新开发一个操作系统算了。
当对游戏的热爱和超乎寻常的技术能力结合,爆发的能量是难以想象的。汤普森找到了一台废弃已久的、如同房间一样大的老式PDP-7“小”型机。在这台机器上,他首先重写了游戏,随后准备开发一个全新的操作系统。
正好这段时间,汤普森的老婆带着孩子准备回娘家住3个礼拜,也就是说,他有完整的3个礼拜开发时间。
昼夜不息的编程后,基于之前搞砸Multics系统的经验,他很快完成了内核系统、文件系统、编辑器、编译系统。陆续做了一些改动后,第一版UNIX操作系统诞生了。
当时,汤普森年仅26岁。
1973年10月,在IBM举办的操作系统原理专题研讨会上 ,UNIX首次向世界问好,举世震惊。
随着UNIX的用户越来越多,汤普森和里奇决定将UNIX进一步改写,以便可以移植到各种不同的硬件系统。
由于UNIX的源码中不少是用汇编完成,不具备良好的移植性,刚好,1973年,丹尼斯·里奇在B语言的基础上开发出了C语言。C语言灵活,也更高效,与硬件无关,并且不失其简洁性,正是UNIX移植所需要的法宝。
于是旧版的UNIX与C语言完美结合在一起,产生了新的可移植的UNIX系统。
在系统设计的同时,二位甚至融入了自己对程序的哲学思考——Keep It Simple, Stupid。
这套哲学思想翻译过来便是:
程序只做一件事并把这件事做好;
写出的程序要能放在一起工作;
程序要以处理文本流作为统一的接口。
在创作的同时,还能够总结出一套哲学理论,的确可谓大师风范。
在哲学之外,汤普森仍有着玩世不恭的一面。最开始,UNIX系统在贝尔实验室供大家免费使用。有人发现,汤普森总能进入每个人的账户,于是一位同事分析了UNIX代码,重新编译了系统。
令人意想不到的是,汤普森还是能进入他们的账户,贝尔实验室的科学家们却对此束手无策。
直到1983年,获得图灵奖后,汤普森才揭示了这一秘密,原来,让他轻松“侵入”各位同事账户的秘诀不在UNIX代码,而在编译UNIX代码的C编译器。而汤普森正是编译器的开发者。
这种向编译器植入的后门后来被人们称为“Thompson hack”,对计算机安全领域产生了举足轻重的影响。
著名黑客理查德·斯托曼曾说过,满足三个特点才能称为黑客:有趣又爱玩,智商高,同时具备探索精神。
好吧,这简直是对汤普森精准的人物画像。
2000年,57岁的汤普森在贝尔实验室退休。然而,仅仅6年后,打破了程序员“35岁定律”的老爷子便加入了Google公司。
老当益壮,汤普森并非去谷歌颐养天年,他与其它优秀的科学家一起开发了Go语言,也就是Golang。Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发,一经面世,便受到诸多程序员追捧。
但在另一边,汤普森的故事还在继续。除了写程序之外,汤普森是一位狂热的飞行爱好者,并且还获得了飞行执照。在地上,汤普森是虚拟世界的缔造者。到了空中,他又变成了无拘无束的飞鸟——他总是那么自由。
1992年,汤普森特意到莫斯科,玩了一把米格29战斗机。临起飞前,飞行教练看着这位年近半百的老人,紧张得满头汗。他叮嘱老人,起飞要注意速度,空中不要太快拉升,油门控制要尽量……
话还没说完,飞机已经像箭一般射了出去。
参考资料,图片来源:
1.https://www.jianshu.com/p/641b2a0933d9;
2.http://www.sohu.com/a/221463452\_114731。
- END -
E
very Friday
18:00
让我们一起从人物的角度,编码0和1的世界。
●地下网络犯罪之王马克斯·维京(一):也曾少年 | 人物志027
●地下网络犯罪之王马克斯·维京(二):数码耶稣的犹大 | 人物志028
●地下网络犯罪之王马克斯·维京(三):犯罪之王的诞生 | 人物志029
点击下方阅读原文,加入社群,读者作者无障碍交流
读完有话想说?点击留言按钮,让上万读者听到你的声音!