本页使用了标题或全文手工转换

肯·汤普逊

维基百科,自由的百科全书
跳转至: 导航搜索
肯尼斯·蓝·汤普逊
Ken n dennis.jpg
肯·汤普逊(左)和丹尼斯·里奇
原文名 Kenneth Lane Thompson
出生 (1943-02-04) 1943年2月4日(73歲)
美国路易斯安那州新奥尔良
国籍 美国
研究領域 计算机科学
机构 贝尔实验室
Entrisphere公司
Google公司
母校 加州大學柏克萊分校(1965年取得理學學士,1966年取得理學碩士
知名于 Unix
B語言
Belle英语Belle (chess machine)
UTF-8
国际象棋的残局数据库英语Endgame tablebase
Go语言
著名獎項

IEEE皮奥尔奖英语IEEE Emanuel R. Piore Award(1982)
图灵奖(1983)
IEEE汉明奖英语IEEE Richard W. Hamming Medal
(1990) 计算机先驱奖英语Computer Pioneer Award(1994)
计算机历史博物馆研究员奖(1997)
美國國家技術獎章英语National Medal of Technology(1998)
金井务奖英语Tsutomu Kanai Award(Tsutomu Kanai Award)(1999)

日本国际奖(2011)

肯尼斯·蓝·汤普逊英语:Kenneth Lane Thompson,1943年2月4日)小名肯·汤普逊英语:Ken Thompson),是美国计算机科学学者和工程师。駭客文化圈子通常称他为“ken”[1]。在贝尔实验室工作期间,汤普逊设计和实现了Unix操作系统。他创造了B语言——C语言的前身,而且他是Plan 9操作系统的创造者和开发者之一。2006年,汤普逊进入Google公司工作,与他人共同设计了Go语言。他與丹尼斯·里奇同為1983年圖靈獎得主。

此外,肯·汤普逊还参与过正则表达式UTF-8编码的设计,改进了文本编辑器QED英语QED (text editor),创造了ed英语ed (text editor)编辑器。他曾制造过专门用于下国际象棋的电脑“Belle英语Belle (chess machine)”,并建立了残局数据库英语Endgame tablebase

生平[编辑]

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

DEC PDP-7Unix系统最初在它上面运行。

1960年,他就讀加州大學柏克萊分校,主修電氣工程,1966年取得了電子工程碩士學位[3]。他的导师是美國数学家、计算机科学家埃尔温·伯利坎普。1966年,肯·汤普逊加入贝尔实验室[4]。他參與了貝爾實驗室與麻省理工學院以及通用電氣公司聯合開發的Multics系统項目。在开发Multics系统期间,汤普逊创造了Bon编程语言[5]。与此同时,他又编写了一个名为“Space Travel”的游戏。后来貝爾實驗室撤出了Multics計劃。为了能够继续玩游戏,汤普逊只好找到一台老式PDP-7機器,重寫了他的「Space Travel」遊戲[6]

在把游戏移植好之后,汤普逊又着手把自己的工具扩充成完备的操作系统。他和丹尼斯·里奇带领一些贝尔实验室的成员在PDP-7上面进行开发工作,实现了文件系统进程设备文件命令行解释器和一些小的工具程序等。1970年,在布萊恩·柯林漢的建议下,这个系统命名为“Unix”,与“Multics”名字相对应[7]。在完成Unix系统开发的基本工作之后,汤普逊觉得Unix系统需要一个系统级的编程语言,于是创造了B语言。后来里奇在B语言的基础上创造了C语言[8]

在60年代,肯·汤普逊还参与了正则表达式的设计,开发了QED英语QED (text editor)相容分時系統版本,并在其中引入正则表达式支持。QED和后来由汤普逊编写的ed编辑器英语ed (text editor)对正则表达式的流行做出了重要贡献。之后正则表达式普遍用于Unix的文本处理程序中。现在,几乎所有使用正则表达式的程序都用到了某种来自汤普逊的记号的变体。汤普逊还发明了Thompson构造法,该算法能够将正则表达式转化为非确定有限状态自动机以提高匹配效率[9]

肯·汤普逊(坐着)和丹尼斯·里奇在一台PDP-11前面工作。
SIMH英语SIMH PDP-11模拟器上运行Version 6 Unix,其中能够看到“/usr/ken”这个文件。

进入70年代,肯·汤普逊和丹尼斯·里奇继续合作开发Unix操作系统。他们二人在Research Unix的开发方面非常有影响力,以至于道格拉斯·麥克羅伊后来写道,“你可以安全地把丹尼斯·里奇和肯·汤普逊的名字放到几乎所有没写其他人名的地方。”[10]汤普逊在2011年的一次采访中说,Unix的第一个版本是他写的,之后里奇开始提倡这款系统,并且帮助进行开发[11]

前两三个版本的Unix系统都是我自己写的,然后丹尼斯成为了布道者。接下来我们用一个称为“C”的高级语言来重写这个系统。他的大部分工作都在C语言和I/O系统上面,而其他部分的工作都是我做的。所有的工作都是在PDP-11机器上完成的。这台机器是侥幸找到的,因为那台机器本来是用于搞学术的。[11]

Unix系统的开发也帮助了C语言的发展。肯·汤普逊后来补充道,C语言“随着Unix系统的一次重写而发展,就这样,它成为了系統程式設計的完美选择。”[11]

在1975年,肯·汤普逊从贝尔实验室休假,并回到了他的母校加州大学伯克利分校。在那里,他帮助在PDP-11/70上面安装了Version 6 Unix系统。后来加州大学伯克利分校维护了自己的Unix版本,即柏克萊軟體套件(BSD)。[12]

肯·汤普逊和贝尔实验室的约瑟夫·康登英语Joseph Henry Condon共同制作了下棋机器Belle英语Belle,汤普逊负责软件部分[13]。汤普逊还编写了生成国际象棋残局走法的程序,即残局数据库英语Endgame tablebase。对于所有只剩4到6步的残局,只要程序从数据库中找到了棋谱那么就可以给出“完美”解法。后来他在国际象棋专家约翰·罗伊克罗夫特英语John Roycroft的帮助下发布了程序生成结果。

貝爾實驗室九號計畫,正在运行acme英语acme (text editor)编辑器和rc英语rc解释器。

80年代之后,汤普逊和里奇继续修补Research Unix,在第8到第10版中采用了BSD的代码。在80年代中期,贝尔实验室开始计划用一套新的操作系统来取代Unix,即貝爾實驗室九號計畫。这个系统是一个利用Unix原理的新系统,计划将更广泛地用于所有主要设备中。汤普逊为计划的设计和实施发挥了重要作用。来自Research Unix的较新版本的一些程序,例如mkrc英语rc也加入到Plan 9系统中。

汤普逊试验了早期版本的C++语言,但是后来拒绝使用C++,因为在不同版本之间经常发生不兼容的情况。汤普逊在2009年的一次采访中表达了对C++的负面评价,并说“C++做很多事情都是只达到一半的程度,而且它就是一个由各种互相冲突的想法组成的垃圾堆。”[14]

1992年,汤普逊和羅勃·派克设计并实现了UTF-8编码方案,并将其用于Plan 9系统中[15]。现在,UTF-8编码已经成为互联网的主要字符编码,在所有网页中,使用UTF-8编码的网页占了一半以上[16]。1996年,肯·汤普逊继续和丹尼斯·里奇合作,开始从事Inferno操作系统的开发[17]

2000年下半年,汤普逊离开贝尔实验室,进入美国的Entrisphere公司工作。2006年辞职并加入Google公司。之后他与羅勃·派克和羅伯特·格瑞史莫(Robert Griesemer)二人共同设计了Go语言。在讲述自己的开发过程时,他说他们三人都是从零开始的。出于对C++的厌恶,三个人共同讨论了语言的每一项特性,所以Go语言最终没有任何“无用的垃圾”[11]

在2009年的一次采访中,汤普逊表示自己正在使用基于Linux的操作系统。[18]

荣誉和获奖情况[编辑]

1980年,汤普逊当选美国国家工程院院士,因为“设计了Unix操作系统,它的效率、广度、力量和风格指导了一代在小型计算机进行开发的人。”[19]

1983年,因“发展了通用操作系统的理论,特别是实现了Unix操作系统”,汤普逊和里奇共同获得了图灵奖。他的演讲以《Reflections on Trusting Trust》(反思对信任的信任)为题[20]。文中提到的向编译器植入的后门后来被人们称为“Thompson hack”,对计算机安全领域产生了重要影响[20]。因为在Unix系统和C语言方面做出的贡献,他们二人在1990年共同获得了IEEE汉明奖英语IEEE Richard W. Hamming Medal[21],在1997年获得了计算机历史博物馆研究员奖[22],又在1999年4月27日获得了由美国总统比尔·克林顿颁发的美國國家技術與創新獎章英语National Medal of Technology and Innovation

1999年,电气电子工程师学会向汤普逊颁发了第一个金井务奖英语Tsutomu Kanai Award[23]。2011年,汤普逊和里奇二人又共同获得了日本国际奖[24]

参见[编辑]

参考文献[编辑]

  1. ^ ken. The Jargon File英语Jargon File (version 4.4.7). 
  2. ^ Seibel, Peter. Coders At Work. 2009: 450. 
  3. ^ Thesis Students. Elwyn Berlekamp's Home Page. University of California, Berkeley Department of Mathematics. 
  4. ^ Ken Thompson: developed UNIX at Bell Labs. [2016-10-31]. 
  5. ^ Ritchie, Dennis. The Development of the C Language. Bell Labs. [2016-10-31]. 
  6. ^ Ritchie, Dennis M. Space Travel: Exploring the solar system and the PDP-7. Bell Labs. 2001 [2016-02-04]. (原始内容存档于2015-12-26). 
  7. ^ Ritchie, Dennis M. The Evolution of the Unix Time-sharing System. [2016-10-31]. 
  8. ^ Dennis M. Ritchie. The Development of the C Language. Bell Labs/Lucent Technologies. [2016-10-31]. 
  9. ^ Cox, Russ. Regular Expression Matching Can Be Simple And Fast. [2016-10-30]. 
  10. ^ McIlroy, M. D. A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Technical report). CSTR. Bell Labs. 1987. 139. 
  11. ^ 11.0 11.1 11.2 11.3 Dr. Dobb's: Interview with Ken Thompson. 2011-05-18 [2014-11-10]. 
  12. ^ Salus, Peter H. Chapter 7. BSD and the CSRG. The Daemon, the Gnu and the Penguin. Groklaw. 2005. 
  13. ^ Joe Condon (obituary). Physics Today. [5 November 2015]. 
  14. ^ Seibel, Peter. Coders At Work. 2009: 475. 
  15. ^ Pike, Rob. UTF-8 history. April 30, 2003. 
  16. ^ Davis, Mark. Unicode nearing 50% of the web. Official Google Blog. Google. 28 January 2010 [5 December 2010]. 
  17. ^ Khamlichi, M.el. Ken Thompson UNIX systems father. Unixmen. [2016-10-31]. 
  18. ^ Seibel, Peter. Coders At Work. 2009: 479. 
  19. ^ Dr. Ken Thompson. National Academy of Engineering. 
  20. ^ 20.0 20.1 Thompson, Ken. Reflections on trusting trust. Communications of the ACM. 1984, 27 (8): 761–763. doi:10.1145/358198.358210. 
  21. ^ IEEE Richard W. Hamming Medal Recipients (PDF). IEEE. [May 29, 2011]. 
  22. ^ Ken Thompson. Computer History Museum. [2016-10-29]. 
  23. ^ Ken Thompson Receives Kanai Award for Impact of Unix System. Bell Labs. March 25, 1999. (原始内容存档于March 26, 2013). 
  24. ^ Evangelista, Benny. Ken Thompson, Dennis Ritchie win Japan Prize. The San Francisco Chronicle. January 25, 2011. 

外部链接[编辑]