说到Unix与C语言,还有一段小故事,当时安装了Unix的PDP-11被放在贝尔实验室供大家使用,有一天大家伙发现Ken总是可以得到最高的权限轻松进入他们的帐户,在贝尔实验室这种高人云集的地方,这简单是太不能容忍了,于是有若干高人跳了出来,仔细分析Unix代码,找到后门,修改后再重新编译整个Unix,当所有人都以为这个世界应该从此清静了的时候,却发现Ken还是很容易就取得了他们的帐户权限,为此大家郁闷不已。直到很多年后,Ken才道出其中的原委,原来代码里确实存在后门,不过并不在Unix代码中,而是藏在编译Unix的编译器里,每次编译器编译时就会自动加入后门代码,而当时整个贝尔实验室都用的是Ken所写的C编译器。
由于Unix与C语言的深远影响,1983年美国计算机协会将当年的图灵奖破例颁给了软件工程师出身的Ken与Dennis,并在当年还决定新设立一个奖项――软件系统奖,以奖励那些优秀的软件开发者,当然首个软件系统奖也是非他们两人莫属了。
完成Unix这样的伟业之后,也许是受了老师Berlekamp的影响,Ken的兴趣转移到计算机象棋程序上,开发了一个名为Belle的国际象棋专用计算机,在当时那可是打遍天下无敌手。他还编写了一个程序扩展象棋残局库。
Ken的职业生涯也并非一帆风顺。1980年代,他在Dennis Ritchie的支持下,与Rob Pike、Brian Kernighan、Tom Duff、Doug McIlroy、Bjarne Stroustrup、Bruce Ellis等众多大牛合作,开始投入雄心勃勃的Plan 9操作系统开发中,这个项目的目的是开发出能取代Unix的新一代分布式多用户和图形化的操作系统。1992年、1995年先后发布了两个正式版本。但Linux的迅猛发展渐渐使Plan 9丧失了成长空间。1990年代后期,朗讯公司取消了商业计划,Plan 9最终也没能真正走出实验室。
此后,朗讯又启动了Inferno操作系统研究项目,Ken继续投身其中。这个名字吓人(取材自《神曲》中的地狱之火)的项目有Dis虚拟机、先进的编程语言Limbo和协议Styx,在1997年发布了第一版,并用于朗讯两个产品之中,而且公司还成立了专门的业务部门。应该说取得了一定的成功。但是,这时候互联网兴起,Sun开发的Java开始大红大紫。而朗讯公司完全没有意识到,其实Inferno完全可以与Java环境竞争,从互联网大潮中分一杯羹,在营销和运营模式上完败。三年后Inferno业务部门被关闭,知识产权出售给英国公司Vitanuova。
2000年12月,Ken正式退休。后曾以Fellow头衔在另一家通信设备公司Entrisphere工作到2006年。2007年9月,他以杰出工程师的身份加入Google,再次与老朋友Rob Pike一起出征,这次他的任务是为Google设计基础设施。他在《编程人生》一书访谈中表示,自己的工作是操作系统方面的事情,是各部分之间的胶水。他有特权可以做自己想做的事情,面临的挑战是,使许多不可靠的机器能像一台可靠的多处理器机器那样工作。虽然对Google大规模海量用户的计算环境以及相关的制度还不太适应(比如,他甚至还没有资格提交代码),但他总体上还是很喜欢这里的工作。2009年11月他们工作的第一个成果发布,这就是引起广大程序员关注的Go语言——带垃圾收集、编译型的并发系统语言。某种程度上,他们的工作似乎是Inferno的延续,Go语言的源代码中,有一些直接衍生自Inferno。下一步还会有什么惊喜呢?让我们拭目以待。
Unix使Ken获得了众多荣誉,图灵奖、美国国家技术奖、IEEE Tsutomu Kanai奖,还有前几天刚刚颁发的2011年日本国际奖(奖金45万美元)。此外,Ken在开发编辑器的过程中发明了正则表达式,在开发Plan 9操作系统的过程中发明了UTF-8编码,这些成就也值得我们感念。
应该说,Ken Thompson是幸运的,他因兴趣进入计算机界,整个职业生涯几乎能随兴之所至。难怪他认为优秀开发人员的标志是热情。不过,有一点可能会令我们惊讶,他建议自己的儿子去读生物而非计算机,理由是计算机发展太慢了。
1999年肯·汤普逊(左)和丹尼斯·里奇因开发C语言和 Unix 操作系统一起获得了美国国家技术奖,克林顿授奖。