肯·汤普逊
生平
肯·汤普逊在美国的新奥尔良出生。有人曾问他如何学会了编程,他表示自己只是因为对逻辑着迷。

DECPDP-7,Unix系统最初在它上面运行。
1960年,他就读加州大学柏克莱分校,主修电气工程,1966年获取了电子工程硕士学位 。他的导师是美国数学家、计算机科学家埃尔温·伯利坎普。1966年,肯·汤普逊加入贝尔实验室 。他参与了贝尔实验室与麻省理工学院以及通用电气公司联合开发的Multics系统项目。在开发Multics系统期间,汤普逊创造了Bon编程语言 。与此同时,他又编写了一个名为“Space Travel”的游戏。后来贝尔实验室撤出了Multics计划。为了能够继续玩游戏,汤普逊只好找到一台老式PDP-7机器,重写了他的“Space Travel”游戏 。
在把游戏移植好之后,汤普逊又着手把自己的工具扩充成完备的操作系统。他和丹尼斯·里奇带领一些贝尔实验室的成员在PDP-7上面进行开发工作,实现了文件系统、进程、设备文件、命令行解释器和一些小的工具程序等。1970年,在布莱恩·柯林汉的建议下,这个系统命名为“Unix”,与“Multics”名字相对应 。在完成Unix系统开发的基本工作之后,汤普逊觉得Unix系统需要一个系统级的编程语言,于是创造了B语言。后来里奇在B语言的基础上创造了C语言 。
在60年代,肯·汤普逊还参与了正则表达式的设计,开发了 QED ( 英语 : QED (text editor) ) 的兼容分时系统版本,并在其中引入正则表达式支持。QED和后来由汤普逊编写的 ed编辑器 ( 英语 : ed (text editor) ) 对正则表达式的流行做出了重要贡献。之后正则表达式普遍用于Unix的文本处理程序中。现在,几乎所有使用正则表达式的程序都用到了某种来自汤普逊的记号的变体。汤普逊还发明了Thompson构造法,该算法能够将正则表达式转化为非确定有限状态自动机以提高匹配效率 。

肯·汤普逊(坐着)和丹尼斯·里奇在一台PDP-11前面工作。

在 SIMH ( 英语 : SIMH ) PDP-11模拟器上运行Version 6 Unix,其中能够看到“/usr/ken”这个文件。
进入70年代,肯·汤普逊和丹尼斯·里奇继续合作开发Unix操作系统。他们二人在Research Unix的开发方面非常有影响力,以至于道格拉斯·麦克罗伊后来写道,“你可以安全地把丹尼斯·里奇和肯·汤普逊的名字放到几乎所有没写其他人名的地方。” 汤普逊在2011年的一次采访中说,Unix的第一个版本是他写的,之后里奇开始提倡这款系统,并且帮助进行开发 :
“ 前两三个版本的Unix系统都是我自己写的,然后丹尼斯成为了布道者。接下来我们用一个称为“C”的高级语言来重写这个系统。他的大部分工作都在C语言和I/O系统上面,而其他部分的工作都是我做的。所有的工作都是在PDP-11机器上完成的。这台机器是侥幸找到的,因为那台机器本来是用于搞学术的。 ”
Unix系统的开发也帮助了C语言的发展。肯·汤普逊后来补充道,C语言“随着Unix系统的一次重写而发展,就这样,它成为了系统程序设计的完美选择。”
在1975年,肯·汤普逊从贝尔实验室休假,并回到了他的母校加州大学伯克利分校。在那里,他帮助在PDP-11/70上面安装了Version 6 Unix系统。后来加州大学伯克利分校维护了自己的Unix版本,即伯克利软件套件(BSD)。
肯·汤普逊和贝尔实验室的 约瑟夫·康登 ( 英语 : Joseph Henry Condon ) 共同制作了下棋机器 Belle ( 英语 : Belle ) ,汤普逊负责软件部分 。汤普逊还编写了生成国际象棋残局走法的程序,即 残局数据库 ( 英语 : Endgame tablebase ) 。对于所有只剩4到6步的残局,只要程序从数据库中找到了棋谱那么就可以给出“完美”解法。后来他在国际象棋专家 约翰·罗伊克罗夫特 ( 英语 : John Roycroft ) 的帮助下发布了程序生成结果。

贝尔实验室九号项目,正在运行 acme ( 英语 : acme (text editor) ) 编辑器和 rc ( 英语 : rc ) 解释器。
80年代之后,汤普逊和里奇继续修补Research Unix,在第8到第10版中采用了BSD的代码。在80年代中期,贝尔实验室开始计划用一套新的操作系统来替换Unix,即贝尔实验室九号项目。这个系统是一个利用Unix原理的新系统,计划将更广泛地用于所有主要设备中。汤普逊为计划的设计和实施发挥了重要作用。来自Research Unix的较新版本的一些程序,例如mk和 rc ( 英语 : rc ) 也加入到Plan 9系统中。
汤普逊试验了早期版本的C++语言,但是后来拒绝使用C++,因为在不同版本之间经常发生不兼容的情况。汤普逊在2009年的一次采访中表达了对C++的负面评价,并说“C++做很多事情都是只达到一半的程度,而且它就是一个由各种互相冲突的想法组成的垃圾堆。”
1992年,汤普逊和罗勃·派克设计并实现了UTF-8编码方案,并将其用于Plan 9系统中 。现在,UTF-8编码已经成为互联网的主要字符编码,在所有网页中,使用UTF-8编码的网页占了一半以上 。1996年,肯·汤普逊继续和丹尼斯·里奇合作,开始从事Inferno操作系统的开发 。
2000年下半年,汤普逊离开贝尔实验室,进入美国的Entrisphere公司工作。2006年辞职并加入Google公司。之后他与罗勃·派克和罗伯特·格瑞史莫(Robert Griesemer)二人共同设计了Go语言。在讲述自己的开发过程时,他说他们三人都是从零开始的。出于对C++的厌恶,三个人共同讨论了语言的每一项特性,所以Go语言最终没有任何“无用的垃圾” 。
在2009年的一次采访中,汤普逊表示自己正在使用基于Linux的操作系统。
荣誉和获奖情况
1980年,汤普逊当选美国国家工程院院士,因为“设计了Unix操作系统,它的效率、广度、力量和风格指导了一代在小型计算机进行开发的人。”
1983年,因“发展了通用操作系统的理论,特别是实现了Unix操作系统”,汤普逊和里奇共同获得了图灵奖。他的演讲以《Reflections on Trusting Trust》(反思对信任的信任)为题 。文中提到的向编译器植入的后门后来被人们称为“Thompson hack”,对计算机安全领域产生了重要影响 。因为在Unix系统和C语言方面做出的贡献,他们二人在1990年共同获得了 IEEE汉明奖 ( 英语 : IEEE Richard W. Hamming Medal ) ,在1997年获得了计算机历史博物馆研究员奖 ,又在1999年4月27日获得了由美国总统比尔·克林顿颁发的 美国国家技术与创新奖章 ( 英语 : National Medal of Technology and Innovation ) 。
1999年,电气电子工程师学会向汤普逊颁发了第一个 金井务奖 ( 英语 : Tsutomu Kanai Award ) 。2011年,汤普逊和里奇二人又共同获得了日本国际奖 。
参见
Unix哲学
免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。

- 有价值
- 一般般
- 没价值








24小时热门
推荐阅读
关于我们

APP下载


{{item.time}} {{item.replyListShow ? '收起' : '展开'}}评论 {{curReplyId == item.id ? '取消回复' : '回复'}}