Unix之父肯·汤普逊降生
在78年前的今天,1943年2月4日(农历1942年12月30日),Unix之父肯·汤普逊诞生。
肯汤普森
1943年2月4日,Unix之父、图灵奖得主、美国工程院院士肯汤普逊(Kenneth Lane Thompson,1般称之为Ken Thompson,肯汤普森,1943年2月4日-)诞生于美国新奥尔良。在《编程人生》1书的访谈中,他回想自己小学时遭到的教育很烂,但有1堂课讲了2进制,自小喜欢逻辑的他立即被迷住了,他做了很多2进制运算,还借助1台10进制计算器扩大到各种进制。到了高中,他又迷上了电子,自己制作无线电、示波器和放大器。
1960年,Ken如愿进入加州大学伯克利分校主修电气工程。2年级的时候他有机会使用1台摹拟计算机,由于没有他人抢,实际上成了他的专用。解释程序太慢,他不能不直接用汇编编程,并从中学会了甚么是计算机。后来1个假期他又得到了解释程序的源代码清单,在不懂程序所用语言的情况下,他仔细研读,学会了编程,并在学校找到编程的工作。1965年本科毕业后他没有别的地方去,留校了。有个教授为他申请了硕士,因而他又读了1年硕士。硕士导师是著名的信息论和博弈论专家Elwyn Berlekamp。固然,Ken自己回想,实际上他大部份都是在自学,就毕业了。
Berlekamp也是1位传奇人物,博士导师是香农、Gallager等大师,发明了Berlekamp 、Welch-Berlekamp 和 Berlekamp-Massey等著名算法。他花了很多时间研究围棋等博弈游戏,是组合博弈论的开创人之1。他还是加州大学伯克利分校数学系里唯逐一位没有数学学位的教授。更成心思的是,他曾与同事共同创办了Axcom交易顾问公司,在其编写的算法指点下的基金创造了55%净回报率的奇迹。今天,这支基金依然在运作,它就是传奇基金公司文艺复兴(Renaissance,另外一家由数学教授创办的公司)旗下历史最长的Medallion。
离开校园后,Thompson加入了贝尔实验室。应市场的需要,当时贝尔实验室与麻省理工学院和通用电气公司正在联合开发1个多用户分时操作系统,取名为Multics(多路信息计算系统),Thompson成为这个系统的开发人员之1。在开发Multics的期间,Ken创造出了名为Bon的编程语言。惋惜由于这个系统不但开发周期长,本钱高,而且庞大而缓慢,市场前景完全不被看好,最后贝尔实验室从这个项目中撤了出来。这对Ken而言,简直是个巨大的不幸,由于他自己用写的1个star travel游戏就是完全基于Multics的,退出Multics项目意味着Ken将没有机器可以再玩这个游戏了。
面对此情此景,Ken作为1个创造者的本性立即体现了出来,因而他决定自己写1个操作系统来满足他玩游戏的需要,说干就干,Ken找到了1台废弃已久的老式PDP⑺,并在这台机器上重写了他的游戏。在这个进程中,Ken有了1个主张,要开发1个全新的操作系统。利用PDP⑺上的汇编语言,Ken只花了1个月就编写完了操作系统的内核,在这个1个月中,他1周1个内核,1个文件系统,1个编辑器和1个编译程序的完成。做完这个系统后,Ken将其命名为UNiplexed Information and Computing System,缩写为 UNICS,后来做了1下改动,UNIX诞生了。
为了开发Unix,Ken还开发了1种新的语言,即C语言的前身B语言,这类语言简洁明了,接近于硬件语言。Unix的出现开始虽然其实不为大家所看好,但是却引发了贝尔实验室另外一位同事的注意,这就是Dennis M. Ritchie,因而Dennis主动加入进来共同完善这个系统。1972年,他们联手将Unix移植到当时最早进的大型机PDP⑵上。由于Unix是如此的简洁、稳定与高效,以致于当时大家都放弃了PDP⑵上自带的DEC操作系统,而完全改用Unix,这时候的Unix已开始走向成熟了。
在1973年之前Unix还不太为外界所知,到同年10月,Unix在IBM举行的操作系统原理专题研讨会上被提及,当Ken和Dennis在会上宣读论文并展现Unix后,全部会场轰动了,大家都立即涌上来索取这类新型的操作系统的程序。随着Unix的需求量的日趋增加,Ken与Dennis决定将Unix进1步改写,以即可以移植到各种不同的硬件系统,由于Unix的源代码中很多是用汇编完成,不具有良好的移植性,正好Dennis在1973年在B语言的基础上开发出了C语言,C语言灵活,高效性,与硬件无关,并且不失其简洁性,正是Unix移植所需要的宝贝,因而旧版的Unix与C语言完善结合在1起产生了新的可移植的Unix系统。随着Unix的广泛使用,C语言同样成为了当时最受欢迎的编程语言,1直延续至令。
说到Unix与C语言,还有1段小故事,当时安装了Unix的PDP⑴1被放在贝尔实验室供大家使用,有1天大家伙发现Ken总是可以得到最高的权限轻松进入他们的帐户,在贝尔实验室这类高人云集的地方,这简单是太不能容忍了,因而有若干高人跳了出来,仔细分析Unix代码,找到后门,修改后再重新编译全部Unix,当所有人都以为这个世界应当从此清静了的时候,却发现Ken还是很容易就获得了他们的帐户权限,为此大家愁闷不已。直到很多年后,Ken才道出其中的原委,原来代码里确切存在后门,不过其实不在Unix代码中,而是藏在编译Unix的编译器里,每次编译器编译时就会自动加入后门代码,而当时全部贝尔实验室都用的是Ken所写的C编译器。
由于Unix与C语言的深远影响,1983年美国计算机协会将当年的图灵奖破例颁给了软件工程师出身的Ken与Dennis,并在当年还决定新设立1个奖项――软件系统奖,以嘉奖那些优秀的软件开发者,固然首个软件系统奖也是非他们两人莫属了。
完成Unix这样的伟业以后,或许是受了老师Berlekamp的影响,Ken的兴趣转移到计算机象棋程序上,开发了1个名为Belle的国际象棋专用计算机,在当时那可是打遍天下无敌手。他还编写了1个程序扩大象棋残局库。
Ken的职业生涯也并不是1帆风顺。1980年代,他在Dennis Ritchie的支持下,与Rob Pike、Brian Kernighan、Tom Duff、Doug McIlroy、Bjarne Stroustrup、Bruce Ellis等众多大牛合作,开始投入雄心勃勃的Plan 9操作系统开发中,这个项目的目的是开发出能取代Unix的新1代散布式多用户和图形化的操作系统。1992年、1995年前后发布了两个正式版本。但Linux的迅猛发展渐渐使Plan 9丧失了成长空间。1990年代后期,朗讯公司取消了商业计划,Plan 9终究也没能真正走出实验室。
尔后,朗讯又启动了Inferno操作系统研究项目,Ken继续投身其中。这个名字吓人(取材自《神曲》中的地狱之火)的项目有Dis虚拟机、先进的编程语言Limbo和协议Styx,在1997年发布了初版,并用于朗讯两个产品当中,而且公司还成立了专门的业务部门。应当说获得了1定的成功。但是,这时候候互联网兴起,Sun开发的Java开始大红大紫。而朗讯公司完全没成心识到,其实Inferno完全可以与Java环境竞争,从互联网大潮中分1杯羹,在营销和运营模式上完败。3年后Inferno业务部门被关闭,知识产权出售给英国公司Vitanuova。
2000年12月,Ken正式退休。后曾以Fellow头衔在另外一家通讯装备公司Entrisphere工作到2006年。2007年9月,他以杰出工程师的身份加入Google,再次与老朋友Rob Pike1起出征,这次他的任务是为Google设计基础设施。他在《编程人生》1书访谈中表示,自己的工作是操作系统方面的事情,是各部份之间的胶水。他有特权可以做自己想做的事情,面临的挑战是,使许多不可靠的机器能像1台可靠的多处理器机器那样工作。虽然对Google大范围海量用户的计算环境和相干的制度还不太适应(比如,他乃至还没有资历提交代码),但他整体上还是很喜欢这里的工作。2009年11月他们工作的第1个成果发布,这就是引发广大程序员关注的Go语言带垃圾搜集、编译型的并发系统语言。某种程度上,他们的工作仿佛是Inferno的延续,Go语言的源代码中,有1些直接衍生自Inferno。下1步还会有甚么欣喜呢?让我们拭目以待。
Unix使Ken取得了众多荣誉,图灵奖、美国国家技术奖、IEEE Tsutomu Kanai奖,还有头几天刚刚颁发的2011年日本国际奖(奖金45万美元)。另外,Ken在开发编辑器的进程中发明了正则表达式,在开发Plan 9操作系统的进程中发明了UTF⑻编码,这些成绩也值得我们感念。
应当说,Ken Thompson是荣幸的,他因兴趣进入计算机界,全部职业生涯几近能随兴之所至。难怪他认为优秀开发人员的标志是热忱。不过,有1点可能会令我们惊讶,他建议自己的儿子去读生物而非计算机,理由是计算机发展太慢了。
1999年肯汤普逊(左)和丹尼斯里奇因开发C语言和 Unix 操作系统1起取得了美国国家技术奖,克林顿授奖。
肯汤普生和丹尼斯利奇