目录
[显示部分] [显示全部]
C语言之父丹尼斯·麦卡利斯泰尔·里奇(Dennis MacAlistair Ritchie,1941年9月9日-),,出生于美国 纽约 。他是一位美国计算机 科学家,他对ALTRAN、B语言 、BCPL 、C语言 、Multics和Unix 的发展做出了巨大贡献。
丹尼斯·里奇
里奇在哈佛大学 学习物理学 和应用数学 毕业,1967年他进入贝尔实验室 ,目前他是朗讯技术公司系统软件研究部门的领导人。1983年他与肯·汤普逊一起获得了图灵奖。理由是他们“研究发展了通用的操作系统 理论,尤其是实现了UNIX操作系统”。1999年两人为发展C语言和Unix操作系统一起获得了美国国家科技奖章。
维基百科资料显示,美国著名计算机专家、C语言发明人之一丹尼斯·里奇(Dennis Ritchie )已于10月9日去世,享年70岁。 里奇生于1941年9月9日。他发明了包括C语言在内的多种编程语言,并研发了Multics和Unix等操作系统。1983年,里奇获得图灵奖。
当有人问里奇为什么使用他使用的方式开发了C语言的时候,里奇回答说“这样做看上去很好”,他说任何人在同一地方、同一时间会像他那样做的。但是其他许多人认为这只不过反映出了里奇的谦虚。C++的开发者和设计师、里奇在贝尔实验室的同事比雅尼·斯特劳斯特鲁普说:“假如里奇决定在那十年里将他的精力花费在稀奇古怪的数学上,那么Unix将胎死腹中。”
事实上,丹尼斯·里奇与肯·汤普逊两人发展了C语言,同时发展了Unix操作系统,在电脑工业史上占有重要的席位。至今为止C语言在发展软件和操作系统时依然是一个非常常用的电脑语言,它对许多现代的编程语言如C++、C#、Objective-C、Java和JavaScript拥有极大的影响。在操作系统方面Unix也具有极大的影响:今天市场上有许多不同的Unix方言如AIX、Solaris、Mac OS X和BSD等,以及与Unix非常相似的系统如Minix和非常普及的Linux操作系统。甚至其Microsoft Windows操作系统与Unix相竞争的微软为他们的用户和开发者提供了与Unix相容的工具和C语言编译器。
里奇还参加发展了Unix和C语言的两个后继软件:九号计划和Inferno操作系统以及Limbo语言。两者均是基于他以前的工作上发展的。
昵称在技术讨论中,他常被称为dmr,这是他在贝尔实验室的Email地址。
著作
《C程序设计语言》
《Unix Programmer's Manual》
1974年,美国计算机协会(ACM)授予他系统及语言杰出论文奖。 1982年,电气和电子工程师协会(IEEE)授予他EmmanuelPiore奖。 1983年,他获得了贝尔实验室特别人员奖和 1983年,还获得美国计算机协会颁发的图灵奖(又称计算机界的诺贝尔奖)。 1989年,他获得了NEC公司的C&C基金奖。 1990年,电气和电子工程师协会又给他颁发了优秀奖章(HammingMedal) 1999年,他和同为UNIX之父的KenThompson获得美国国家技术奖章
Ritchie生于1941年9月9日的纽约Bronxville,获得学士学位并且获得哈佛大学博士学位,在哈佛,先是学习物理,而后转向应用数学。正是在这时候,一个偶然的机会改变了他一生的选择。
大约1960年,Ritchie听取一些非课程类的计算机讲座后,开始对计算机着迷,并选择了一学期正规(介绍性的)课程。第一部分是模拟计算机,后面是关于打孔卡片设备的,然后才是关于真正的数字式计算机的,并为UnivacI号机准备了一个程序。当时他是一个主修物理的学生,但是更加着迷于计算机处理的理论和实际问题。因此,他的毕业论文大部分是理论方面的,例如1968年获得数学博士时的论文《递归函数的的层次》;但是他也开始投入更大精力到实践方面,例如,作为助手,在IBM7049计算机上用了三年时间为同一个介绍性课程做后续版本。
在Ritchie的成长历程中,有两个人对他的影响最大,一个是他父亲Alistair E.Ritchie,而另一个是他的挚友,同为UNIX发明人的Ken Thompson。
肯·汤普逊(左)与丹尼斯·里奇
由于父亲的指引,他进入全球知名的研发机构——贝尔实验室。Dennis的父亲在贝尔实验室有长时间的工作经历,对晶体管电路类的东西很有研究。1967年在父亲指引下加入贝尔实验室。不久后,加入了Multics(MultiplexedInformationandComputingSystem)项目,正是这个项目,使得他和KenThompsom有了合作的机会。该项目由贝尔实验室、麻省理工学院和通用电器三家合作,Ritchie负责多道处理机的BCPL语言和GE650的编译器,它们都是属于GECOS系统的,同样的,他也写了ALTRAN语言的代数编译器,那是用于符号计算机的一种语言和系统。
关于KenThompson,可以从后面他对此问题的回答中得到印证。有人问过Dennis,他的偶像是谁?他的回答挺有意思。
他说:我不是在英雄熏陶下成长起来的。很显然,对我职业生涯影响最大的人物是KenThompson。UNIX大部分是他的工作,同样也是C语言的前辈,Plan9系统的大部分工作也是他做的。并且在这其间Ken做了第一个计算机象棋大师。 Dennis协助KenThompson做UNIX操作系统,在UNIX系统基本就绪并且在教育、政府和商业中得到一定程度的应用时,他和另一名同伴在Ken帮助下,开始将这个操作系统移植到Interdata8/32上,通过这种方式证明其轻便性,基于UNIX快速的传播:贝尔实验室的第7版已经成为商业化UNIX的第五版和BSDUNIX的基础——这是UNIX快速传播的两个版本。
在UNIX发展之过程中,他向Thompson的B语言中加入数据类型和新的句法,就这样产生了一种新语言——C,这也是他说Thompson是C语言的前辈的原因,C是便携式UNIX的基础,并且它也在其它领域得到了广泛应用;计算机各方面的应用程序和系统发展,从手持设备到巨型机,都有对它的应用,还有美国标准和国际标准的C语言,并且它是后来BjarneStroustrup写的C++语言的基础。
他从来没有间断过在计算机及其操作系统方面的工作,他所领导的研究小组开发出了Plan9和Inferno。 Ritchie的业余生活也非常精彩,工作之余,有自己精彩生活。
他这样描述自己的生活,干的大部分是和计算机相关的,有点纠缠不清的事情。另一方面,也时常读读书看看报。 另一项爱好是旅行,他到过很多地方,特别喜欢旅行,但每次时间都不是很长。可能因为他是一个恋家的人,因而有时旅行不久后感到相当疲乏。但喜欢回想旅行经历,这时就很希望能挤出时间在一个具有异国情调的地方待得时间长一点。
曾有人问过下面的问题,对于一个人是如何涉足软件工业领域的,不同人有不同的回答。是什么使Ritchie选择了她,又是什么使得他在此领域如此潇洒呢?
他的回答很简洁:兴趣和好奇心!他说:我开始对于物理学比较感兴趣,现在仍然是一个业余爱好者,试图跟上物理学的一些新东西。早先上大学时,包括读研究生,我在计算机理论方面花了不少时间(如图灵机、复杂性理论)。这其间,我对真实的电脑也非常着迷,着迷于所编即所见的经历:当你编出一个程序,便能立即看到你的思想的实现!所有的事情以一种非常有趣的方式联系在了一起,也正是这一类的东西促使我进入这一领域。但不知什么原因,我没有真正想过我正在这一领域做什么,即使时光倒流到1968年,我想也是如此。
一如Dennis开发的软件,DMR先生对问题的描述非常简洁。
问:您的生活是怎样和计算机联系在一起的? DMR:在大学的时候我开始对它感兴趣(大约1960-61年),我参加了一个非学术性的讲座,关于大学里的UnivacI(通用自动计算机I号),然后就选修了一些课程。 问:您觉得怎样才是学编程的好方法?学习语言时一种好的工具是不是必需的? DMR:我想你最有必要做下面的事情——编一些小程序,然后编大一点的。 问:怎样才算是一种好的大学教育呢?尤其对计算科学来说。 DMR:教育知识面最好要宽一些,不要仅仅局限于编程。即使是编程,最好多学几种语言。我在大学时花了几年时间学习物理和计算理论知识,现在我仍然对当时的选择比较满意。 问:数学和计算机科学有什么关系吗? DMR:我觉得计算机科学就是:包括工程学在内的对数学的应用。 问:您怎样教育自己的孩子和学生? DMR:两者我都不可能有!我没结婚,并且我是在工业系统而不是学术机构中。 问:您对中国和中国的程序员有什么认识?您想对他们说点什么吗? DMR:我访问中国好多次,但每次都很短暂,以至于很难形成一个一般的看法。上一次我还记得,在大学的见面会上,我讲了一些当时正在从事的工作的情况和历史,学生们的态度非常热情,他们提问所表达出的知识面也很宽博。 C语言或UNIX,任一项发明足以让Dennis成为一代又一代程序员们的偶像。但当我们接触这位伟人之后发现,Dennis是一位非常低调的人,形成对照的是他在软件业成就辉煌的40年。 今天,当初与他同期加入贝尔实验室的科学家中,多数人都已安享晚年或是自立门户成为老板,而Dennis还是一如既往地在这里从事自己喜欢的研究工作,著书立说,潜心编程。在完成C语言和UNIX两座高峰后,他还带领他的研究小组开发出了新一代操作系统Plan9和Inferno。 C语言和UNIX的发展历程,还让我们从侧面见证了业界流流传很久的话题:贝尔实验室出大师!而在谈到贝尔实验室成功的原因时,Dennis的评价只有四个字:管理得当! 在谈到贝尔实验室时,虽然它的称呼、Logo不断变化,但Dennis评价“贝尔实验室仍然是相当不错的干事的地方”。 贝尔实验室(BellLabs)是全球驰名的研发机构,遍布全球16个国家,自1937年以来已经产生出11位诺贝尔奖获得者。贝尔实验室的科学家和研究人员自1925年以来已经获得了40,000多项发明,30,000多项专利,平均每个工作日超过4项,是全球最多产的发明源泉之一。 贝尔实验室原名“贝尔电话实验室”,1996年10月正式改名为“贝尔实验室”(BellLabs),先后为AT&T和朗讯科技公司的研发机构,也是后者得以成立的支柱。它主要从事通信科技的基础研究和技术发展工作,目前还从事通信系统和设备的研制工作。 自1925年成立之初,它一直是世界上规模最大、通信科技和控制等方面最先进、优秀人才最集中和科技成果最突出的工业研究实验室或研发机构,它的工作人员从成立时的3600人和年经费1200万美元发展到1991年的29000人和37亿美元。在1999年,雇员人数仍为25000人,年经费36.78亿美元,依然雄居世界研发机构的榜首,被称为“世界首要的研发机构”和研发的“象牙之塔”。 美国国家技术奖章的统计数字是贝尔实验室成就的有力补充说明,第一次的奖章是授予贝尔实验室,1999年,Ritchie和Thompson因为在贝尔实验室的受人瞩目的成绩获得此项殊荣,是第六次以集体的名义和第七次个人名义获得国家技术奖章。
图:KenThompson(左)和DennisRitchie从克林顿手中接过国家技术奖章
问:在AT&T和Bell实验室有这样多的IT发明和著名人物,您觉得有什么秘决吗?
DMR:我觉得这得益于我们的管理,使得有足够资金资助研究,更重要的是给予充足的时间和允许某些思想发展的时间。很幸运的另一点是,这里有一批天才人物的加入。还有一定程度的幸运在里面:1970年代,在计算机硬件条件(如小型机)发生了巨大的变化,这样使得许多机构可以顺利地开展实验,而这之前是很困难的。
问:现在的大学有部分学生中途退学,您怎样看待这现象呢? DMR:在.com泡沫时期,我曾经为此非常担心,现在,至少现在在我们国家,好象不很普遍了。可能原因在于,人们已经不再把计算机科学看作可以立即赚到大把美金的东东了,因此,现在其他的人对这门学科本身更感兴趣一点。 C语言UNIX双双飞
作为一门伟大的语言,C语言的发展颇为有趣,C语言是借助UNIX操作系统的翅膀而起飞的,UNIX操作系统也由于C而得以快速移植落地生根,两者相辅相承,成就了软件史上最精彩的一幕。 1967年,Dennis参与的第一个项目是Multics,UNIX的诞生和Multics有一定渊源的。Multics是一个操作系统项目,被设计运行在GE-5大型主机上,但是由于整个目标过于庞大,糅合了太多的特性,Multics虽然发布了一些产品,但是性能都很低,最终以失败而告终。
AT&T最终撤出了投入Multics项目的资源,其中一个开发者,KenThompson则继续为GE-5开发软件,并最终编写了一个太空旅行游戏。经过实际运行后,他发现游戏速度很慢而且耗费昂贵。在DennisRitchie的帮助下,Thompson用PDP-7的汇编语言重写了这个游戏,并使其在DECPDP-7上运行起来。这次经历加上Multics项目的经验,促使Thompson开始了一个DECPDP-7上的新操作系统项目。Thompson和Ritchie领导一组开发者,开发了一个新的多任务操作系统,这个项目被称为UNICS(UniplexedInformationandComputingSystem),因为它可以支持同时的多用户操作,也就是后来的UNIX。
最初的UNIX是用汇编语言编写的,一些应用是由叫做B语言的解释型语言和汇编语言混合编写的,在移植的过程中遇到不少麻烦。早在对Multics项目调整过程中,就迫切需要一门高级计算机语言做工具,可供选择的范围仅仅是PL/I、Fortran等,经过一一实验,不得不放弃,最后Ken决定设计一种自己的语言,将BCPL语言压缩到仅有8KB的内存中,B语言诞生了。
B语言也并非无懈可击,由于自身局限性,在设计UNIX操作系统时让设计者吃了不少苦头,为了解决程序的可移植性问题,他们决定对它进行简单改进,形成NB语言。但NB在UNIX的移植方面依然不尽人意,此后Dennis又对NB语言做了改进,C语言诞生。
这是个划时代的动作,C语言让UNIX能够轻易地被移植到各种不同的机器上,为UNIX的迅速普及立下汗马功劳。 1977年Dennis发表了不依赖于具体机器系统的C语言编译文本——《可移植的C语言编译程序》,UNIX操作系统得已推广的另一项有利举措是标准化。种种得力举措,从而使C语言成为目前世界上流行最广泛的高级程序设计语言之一。
1978年BrianW.Kernighan和DennisM.Ritchie出版的名著《C程序设计语言(TheCProgrammingLanguage)》,常被人们称为K&R版C教材或“白皮书”,为C语言的推广普及立下汗马功劳。 1988年,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准。随着标准化的深入,C语言发展迅速,成为最受欢迎的语言之一。
而Dennis由于C语言和UNIX两项成就,成为许多编程爱好者膜拜的对象。也正因此,和Ken二人于1983年获得有计算机界诺贝尔奖的ACM图灵奖。
C语言最初被用于UNIX的编写,后来它被众多程序员狂热拥戴,成为使用最广泛的系统开发语言,这却是Dennis本人也没有预料到的。 现在,C语言,作为一种通用的程序设计语言,它主要用来进行系统程序设计。具有高效、灵活、功能丰富、表达力强和移植性好等的特点,在程序员中备受青睐。C语言广泛应用于不同的操作系统,例如UNIX、MS-DOS、MicrosoftWindows及Linux等。C语言是一种面向过程的语言,同时具有高级语言和汇编语言的优点。在C语言的基础上发展起来的有支持多种程序设计风格的C++语言,网络上广泛使用的Java、JavaScript,微软的C#等。
而UNIX作为一种一种多用户、多任务的通用操作系统,已发展成为当前使用普遍、影响深远的工业界主流的操作系统,成为重要的企业级操作平台,广泛运行于PC、小型机等各种环境,用于大型信息系统的关键业务服务,如数据库和Internet主机。
在技术方面,曾有人问Dennis,C语言设计目标有没有随着时间推移而改变?如果没变,为什么?他说:我个人的目标这些年来一直未变,并且,我不是1989和1999年标准的主要推动者。无论1989年ANSI标准还是ISO标准都使事情制度化了,这些条文比我最初写的文档要好;最需要加以说明的是我早先关于函数原型做的工作,对C++语言的影响是非常重要的一个影响。
而在关于众多计算机语言优劣性能的激烈辩论中,始终处在中心位置的C语言作者Dennis却显得很平静。西班牙的一位大学生曾经问过他类似的问题:如果UNIX被选为过去和当前的操作系统,尽管过去几年出现了一些面向对象的语言,毫无疑问C也将被认为是“唯一的语言”。你怎么看待C++和Java,以及C和C++程序员之间在UseNet上经常发生的激烈争论呢?
他说:C++的很大一部分得宜于C。因为C早在C++出现之前就已经具有了非常好的兼容性,所以C++才可以采用C作为建构自身的基础并使用它来开发自己的编译器。C被设计成为一种便携式汇编语言,对于这一特性人们褒贬不一,C++则试图把编程方法提高到面向对象这种更抽象的层次上来。从最近形成的标准来看,二者共同的缺点是:带有过多的装饰和附属物。同样的,它们都采用了相同的编程思想,都试图按照真正的需求来编写代码。Java显然是C++的改进版本。它砍掉了C中的指针操作部分,引入了生成独立于机器的目标文件这种编程思想(虽然这个思想并不是很新的,但是也许直到现在它才真正可行了)。既然Sun和Microsoft公司(它的产品同样的有过多的装饰附件)已经把Java作为它们之间竞争的工具,谁也难以预料事态将向何处发展。
C语言是Dennis的得意这笔,对于这一笔,他看得非常平静,当问到他对C语言的将来做一下预测时,他的回答十分简洁:C语言正在被C++,也可能是Java所替代,也可能是更高级的脚本语言。当然,它在关于系统一类设计中还是相当强的工具。
问:您是怎样发明C语言的?发明的过程是什么样子的。它对您的生活和研究有什么影响吗? DMR:公正地说,发明C语言的目的是:为了写编译器和语言设计,为了更易于编写UNIX操作系统程序,我们做的一个可以在小型计算机上使用的工具。UNIX做的比较好,并且PC开始相当普遍,由于C语言在UNIX上的很好地应用,使得用它来写应用程序和操作系统迅速增长起来。因此,对我来说,C语言的确非常重要。
问:您觉得C语言和C++有什么不同吗? DMR:多年以来,C和C++,已经是两种不同的语言了;Stroustrup先生汲取了C语言语法和潜在的语义学中的许多东西,形成了C++语言。在一些交叉领域,标准委员会尽量使两种语言兼容。 问:您觉得计算机语言和我们人类的语言有什么不同呢? DMR:计算机语言更加正式和明确,有统一的规则,当然,它们都是经过设计的。人类语言有语法,但相对来说不很正式,有些规则可以打破,当然,它们有不同的目的——为了同人交流而不是同机器交流。
问:您对面向对象是怎样理解的?它是不是一种好的可接受的编程思考方式?有没有学习OO必须的有用的工具? DMR:我看过OO的东西但我现在还不是OO迷。这种思想是非常好的,也即是通过隐藏任务的执行来定义界面,但是它可能做得有点过火;它以很难发现工作本质的程序终结;它的所有的东西就是界面。
问:您能对IT的将来做一下预测吗?将来我们最有可能用什么语言? DMR:我对预测不在行,但是很明显,人们正在从象C语言之类的直接编译型语言,转换到注重解释性的语言,象某些脚本语言。
当有人问里奇他为什么使用他使用的方式开发了C语言的时候里奇回答说“这样做看上去很好”,他说任何人在同一地方、同一时间会像他那样做的。但是其他许多人认为这只不过反映出了里奇的谦虚。C++ 的开发者和设计师、里奇在贝尔实验室的同事比雅尼·斯特劳斯特鲁普说:“假如里奇决定在那十年里将他的精力花费在稀奇古怪的数学上,那么Unix将胎死腹中。”
事实上,丹尼斯·里奇与肯·汤普逊两人发展了C语言,同时发展了Unix操作系统,在电脑工业史上占有重要的席位。至今为止C语言在发展软件和操作系统时依然是一个非常常用的电脑语言,它对许多现代的编程语言如C++、C# 、Objective-C、Java 和JavaScript 拥有极大的影响。在操作系统方面Unix也具有极大的影响:今天市场上有许多不同的Unix方言如AIX、Solaris、MacOSX和BSD等,以及与Unix非常相似的系统如Minix和非常普及的Linux 操作系统。甚至其Microsoft Windows操作系统与Unix相竞争的微软为他们的用户和开发者提供了与Unix相容的工具和C语言编译器。
里奇还参加发展了Unix和C语言的两个后继软件:Plan9和Inferno操作系统以及Limbo语言。两者均是基于他以前的工作上发展的。
2001年10月25日,微软举行隆重的Windows XP发布仪式,启动了10亿美元的宣传大攻势,准备继续垄断操作系统市场。自Windows发布以来,微软在台式机和笔记本电脑市场上所向披靡,但是迄今为止,微软还难以撼动高端市场的操作系统,因为这个市场上有着一个强大的守卫者—Unix。它依然是工作站、服务器、特别是大中型计算机最流行的操作系统,对企业级应用以及工程、学术界产生了巨大的影响。如果现代办公软件的世界属于Windows,那么网络的天下依然属于Unix。
Dennis M. Ritchie 然而不可思议的是,当初这个操作系统的诞生,并不是为了把它推向市场,甚至不是为了让更多人使用,而仅仅是作者为了便于自己使用,而且初衷是为了自己更方便地玩游戏。连Unix这个别扭的名字,也是对早期一个名为Multics操作系统开玩笑的称呼。在后来的获奖答谢中,作者之一的丹尼斯•里奇坦然说:“我们的目的是为自己建立一个良好的计算机工作环境,当然也希望大家都能喜欢它”。
然而,在这不经意间,奇迹诞生了,再一次验证了IT业的创新往往是兴趣,而不是大把大把的金钱使然。经过10年的内部使用,于70年代中期开始。Unix第一次公诸于世,就慢慢走向成功,震动整个计算机业。1969年开始工作时,里奇和汤普生根本没有想过要掀起业界的狂热,在1974年以前,他们甚至没有发表过任何关于项目的消息。而当Unix露面时,他们还惊奇于会引起如此大的兴趣。他们并没有积极推销,大学、研究机构可以免费使用,而且还提供源代码。
两人所在的单位——大名鼎鼎的贝尔公司也没有鼓励开发Unix,但当它成为畅销品时,贝尔才认识到它是一件珍品,并很高兴拥有Unix的部分商标,针对企业收取4.3亿美元的特许使用权。一位贝尔高级主管曾说,Unix是继晶体管以后的第二个最重要发明。丹尼斯面对这种税法,只是谦虚地说:“就其受公众瞩目地程度而言,Unix确实是一项重要的开发”。
据10年统计,1985年美国大约有27.7万台计算机使用Unix,1990年增加到210万台,目前已超过500万,用户数达到3000万。1987年初,适用于Unix软件包达到了2000个,而两年前还只有300个。到80年代中期,Unix就自然成为计算机业的主要标准,尤其在科学和工程应用方向。1984年9月《财富》杂志称,世界上有750所大学中80%的计算机科学家是Unix客户。因此几乎任何计算机专业毕业的,都接触过Unix。1999年4月27日,两人在白宫从美国总统克林顿手中接过沉甸甸的全美技术勋章,这是对他们成就的最高评价。
UNIX之所以获得如此巨大的成功,主要是它采用了一系列先进的技术和措施,解决了一系列软件工程的问题,使系统具有功能简单实用,操作使用方便,结构灵活多样的特点。它是有史以来使用最广的操作系统之一,也是关键应用中的首选操作系统。UNIX成为后来的操作系统的楷模,也是大学操作系统课程的“示范标本”。
由于Unix诸多优点,人们将它称为是软件的瑞士军刀。
1941年9月9日,丹尼斯·里奇出生于纽约州的勃浪克斯山庄(Bronxville),但在9岁时移居新泽西州的塞米特。里奇的父亲是一个电气工程师,在贝尔实验室的交换系统工程实验室当主任,因此,里奇一家可谓“贝尔世家”。里奇中学毕业后进哈佛大学学物理,并于1963年获得学士学位。其间,哈佛大学有了一台UNIVAC I,并给学生开设有关计算机系统的课程,里奇听了以后产生了很大的兴趣。毕业以后他在应用数学系攻读博士学位,完成了一个有关递归函数论方面的课题,写出了论文,但不知什么原因没有答辩,没有取得博士学位,他就离开了哈佛,他说:“我厌倦了,怎么也不能深入。这是一种计算数学,是机器都可以做的理论。”于1967年进入贝尔实验室,与比他早一年到贝尔的汤姆泼逊会合,从此开始了他们长达数十年的合作。
Ken Thompson 在里奇读大学时,他就对计算机感兴趣,但学院的学习使他更注重理论而不是实际应用。在读研究生时,里奇接触到了Multics,并用业余时间为MIT计算时间共享项目MAC工作。1968年,里奇到贝尔实验室工作,他和汤普生都在计算机科学研究部门,他们的任务宏伟而不明确:调查感兴趣的计算机科学问题。
1943年2月4日,汤普生生于新奥尔良,父亲是一个海军军官,经常外出远航。他两岁时就已经在圣迭尔、西雅图、旧金山和德克萨斯的金斯威尔生活过。自幼的爱好有两个:一个是下棋,一个是组装晶体管收音机。年轻时,他经常光顾金斯威尔无线电商店,学会了许多电子和无线电知识。金斯威尔是石油工业中心的一个小镇,没有电话,只有为开往油田钻塔的小车使用的无线电短波。汤普生常常加入去油井参观的无线电商店员工队伍,并爬到钻塔上取需要维修的无线电装置。他从小就爱好象棋,因此在70年代,他编了一套对弈计算机软件,并3次成为美国冠军。父亲为了发展孩子的能力,很舍得为他买晶体管让他摆弄。当时晶体管问世不久,价格不菲,每只晶体管售价10美元。
1960年,汤普生进入加州大学伯克利分校学习,专业是电气工程。1962年,他在计算机中心找了份工作,编写程序和帮助在编程中遇到困难的人。因此虽然他学的是电气,主要是硬件课程,但他对软件也相当熟悉,而且更加偏爱。求学期间,他还参加了通用动力学公司(GDC)在伯克利实行的半工半读计划,既增长了知识,又积累了不少实践经验。
1965年他从伯克利毕业,一年后又获得伯克利的电子工程硕士学位。但后来他并没有用到它。“我曾是一个电子迷,喜欢自己动手做东西。但自从有了计算机以后,我发现他们很相似。计算让人着迷,电子也让人着迷,只是不那么干净,它脏多了,常常有东西被烧坏。”
60年代还是批处理的年代,计算机程序员只能在又慢、又笨,而且效率极低的大型机上工作,急需新系统。1962年,ARPA资助300万美元,其首要目标是开发一个完善的分时系统。60年代末,贝尔实验室与MIT、通用电气GE(那时通用电气也是大型机制造商之一)联合,开发一个多用户分时系统,起名Multiplexed Information and Computer System(Multics)(多种信息和计算服务)。Multics直到1969年才准备好,但是这个系统不但开发成本过高,而且庞大而缓慢,是一个过度开发的怪兽,它在商业上从未取得成功。贝尔决定撤出项目,并招回人马。留下MIT和GE继续开发,后来霍尼威尔购并了GE的计算机部门,还继续销售Multics。
不过,Multics在许多方面都具有重要意义。肯•汤普生和丹尼斯•里奇在开发Unix 时就使用了来自Multics的许多思想。但也许最重要的是“分时”将用户带入了计算机设计世界。Corbato说:“分时导致了一个工程规则:用户的交互式需求和设备效率一样重要。”
肯·汤普生和丹尼斯·里奇工作中 “就实验室来说,Multics的确是一个代价高昂的陷阱。因为它不仅仅是一个研究项目,而是要满足真正的计算需要。”但对于实验室的计算机科学家肯•汤普生来说,它却是个不幸,因为从此他再也没有机器可以玩他的视频游戏了。他自己编写的“太空旅行”仿真游戏,就是运行在Multics的终端上。
Multics比用户需要的更复杂,但用惯了一旦失去,还是令人痛苦的。里奇说:“我们已经习惯了人机交互的环境,你可以在机器上输入数据并得到回答,这种情况让人满足。而不同于过去把卡片装入装备,等一个小时后再回来取。”汤普生玩游戏心切,决定自己开发一个开放式的操作系统。他向老板提出一些建议,但由于有了Multics的前车之鉴,老板自然不会同意。汤普生决定自力更生,他四处寻找,找到了一台废弃的老式电脑——DEC—PDP-7。令人兴奋的是,它带有一套特别的图形终端系统,有很快的硬盘和四个终端,一个视频显示器,可以大大强化“太空旅行”的显示效果。
于是,汤普生在PDP-7上重写了“太空旅行”,在这过程中他萌生新的念头,准备开发一个全新的文件系统。利用PDP-7的汇编语言,汤普生只用一个月就编写完毕操作系统的内核,他制定了一个时间表,每周开发一个内核、文件系统、编辑器和编译程序。这个阶段结束时,他创建了一个差不多可以运行的系统,组成了最原始的操作系统。这是一个为了单一目的由一个人设计的系统,仅仅是为了使自己软件开发更加简单。因此,参考Multics的Multi(多)之义,冠以“Uni(单)前缀。也有另外一种说法,他同事Brian Kernighan非常不喜欢这个系统,嘲笑汤普生说:“你写的系统好真差劲,乾脆叫Unics算了。”(Unics发音与太监的英文Eunuchs一样),就这样,汤普生的系统就叫了这个名字,只不过稍微改动了一下,叫Unix。
Unix的出现引起了实验室另一位系统软件设计员的注意,这就是丹尼斯•里奇,两人开始并肩作战。
“我可以为运行这个文件系统的操作编写代码”,里奇回忆道,“在这个过程,你显然需要不同的命令和软件来测试。于是,我们写了一个子命令程序来处理键盘的输入,还写了一个拷贝命令,一个删除命令。这样能够做任何你想要做的文件编辑工作。操作系统的本质就是:能读取命令并能存储数据。”
回顾那段过程,里奇说它“很可怕,但是它能用。”因为在机器上什么软件也没有,完全是从零开始。实际建立Unix的是汤普生,里奇的主要贡献是指出计算机设备可以像同样名字的文件一样出现在文件系统中,这是一个创新。两年过去了,PDP-7这台老牛破车需要淘汰。因为你在一台几近淘汰的破旧机器上开发,战果是不能为其他人所用的。这时他们将目光投向了大型机PDP-II,这是DEC最有影响的机器之一。但是要上级掏钱买一台新机器来开发,显然是异想天开。
这时,机会来了。实验室的专利部门需要一套文字处理系统,汤普生和同事赶紧写了一个名为“办公任务编辑系统”的项目建议。一开始依然阻力重重,但到了1970年5月,建议通过了。夏天,PDP-II到货了,这台崭新的机器几乎没被使用过,因为它的磁盘12月才到,而且没有软件。这成了Unix的真正起点。到1971年底,Unix基本完成开发,可以让第一个真正的用户进行测试了。三个打字员装入专利应用程序,实验十分成功。专利部门决定采用Unix而放弃DEC原有操作系统。
可以说,Unix在贝尔能够受到欢迎,主要受惠于PDP-II。因为当然大部分实验记录和问题报告都由PDP-II完成。“它有许多好的外设,而且性能可靠,体积又小,又便宜。而DEC的软件不方便,大家四处寻找,听说Unix后,自然就采用它。”
急功近利的大多数商业软件,都在没有充分完善前就匆匆推向市场。而Unix很幸运。它发展得很慢,每一步都很扎实。贝尔内部专门成立了一个开发小组来支持它,Unix是少数几个并不急于推向市场的产品之一,它的酝酿阶段长得不平常,持续了从1969年到1979年的整整10年,但恰如愈陈愈香的美酒一样,当Unix最终作为产品面对用户时,它已经被充分应用过了,也被充分完善了。贝尔实验室有大量的使用者,并在大部分重要的部门历经考验。
1973年前,外面几乎无人知道,直到1973年10月,才在IBM举办的操作系统原理专题研讨会上提及。他们向与会的200来人展示了Unix当时的版本,他们在会上宣读的论文是最成功的论文之一。与会者几乎立即过来索取这种新型操作系统软件。1974年,他们在《Communications of the ACM》期刊上发表了一篇论文,因此人们对Unix产生了更大的兴趣。当年就有40个机构要求购买Unix操作系统软件。
肯•汤普生和丹尼斯•里奇工作中 为了实现Unix的可移植性,他们着手解决Unix的内核,将其依赖PDP的部分重新改写。这部分只占系统的10%,而其余的90%,包括文件系统、内存定位、磁盘驱动等均可以独立。Unix的原始程序用汇编写成,还不具备可移植性。Unix发展进程中的转折点是在1973年,当时Ritchie开发出一种称为C的语言。C的设计原则就是好用,非常自由、弹性很大。就这样Unix和C完美地结合成为一个统一体。用C重写后,Unix就真正可移植了,这时已是1977年。因为C是编写Unix的语言,因此后来也成了最受欢迎的系统程序语言之一。
Unix的贡献还不止于此,当时的传统是,一个操作系统必须完全用汇编语言写成,让计算机发挥最高的效能。汤普生与里奇,是头几位领悟硬件与编译器的技术的人,计算机已经进步到操作系统可以完全用高级语言来写,仍保有不错的效能。Unix和C相得益彰,不可思议地变成一个重量级的系统组合,开发工具和操作系统的完美结合滋生了黑客文化深邃的根源。五年后,Unix已经成功地移植到数种机器上。它意味著,如果Unix可以在各种平台上运行的话,Unix的应用软件就能移植到各种机器上,再也用不着为特定的机器写软件了。追随Unix最大的好处是,当一种新的计算机出现,程序员用不着重新发明轮子和火了。这样,Unix与70年代风起云涌的各种PC操作系统有了根本区别,包括当时最著名的CP/M,也是针对特殊的处理芯片——Intel 8080,而Unix可以运行在各种微处理器上,8080、Z80、8086、8088、Z8000、68000、16032、LSI-11、PDP-11、VAX、HP-9000、IBM-370、适用的机器从5000美元到数十万美元都有。
由于看好UNIX的应用和前景,各大公司纷纷推出自己的UNIX版本,如IBM的AIX,SUN的Solaris,HP的HP-UX,SCO 的UNIXWare和Open Server,DEC(已被Compaq收购)的digtal UNIX,以及加州大学伯克利分校的UNIX BSD。这些UNIX各有特色,形成百花齐放的局面。如今,如日中天的Linux实际上也是UNIX的一个变种。
在计算机发展史上,没有哪个程序语言像C那样得到如此广泛的流行;也没有哪个操作系统像UNIX那样获得如此普遍青睐和厚爱。UNIX的开发在前,C是为了使UNIX具有可移植性而后来研制的。作为亲密的合作者,汤普生在UNIX的开发中起了主导的作用,而里奇则在C的设计中起的作用更大一些。他们两人共同获得了1983年度的图灵奖。
除了跨平台的优点外,Unix与C还有许多显著的优势。例如它们的的设计哲学是Keep It Simple, Stupid'programmer(简单和傻瓜化),可以轻易掌握整个C的逻辑结构。C与Unix的应用范围之广,出乎原设计者之意料,很多领域的研究要用到电脑时,它们都是最佳拍档。Unix采用了200多条程序命令,其内核很小,仅8000行代码,其中只有800行用了汇编语言。还有一大优点就是经济,一条用100行到1000行代码的程序,用Unix不超过10条命令就可解决。尽管缺乏一个正式支援的机构,它们仍在AT&T内部中疯狂的散播。到了1980年,已蔓延到大学与研究机构,还有数以千计的黑客想把Unix装在家里的机器上。
Unix有一套专有的网络软件---UUCP:一种低速、不稳但成本很低廉的网络。两台Unix机器用条电话线连起来,就可以互传电子邮件。UUCP是内建在Unix系统中的,不用另外安装。于是Unix站台连成了专属的一套网络,形成了Unix黑客文化。在1980第一个USENET站台成立之后,组成了一个特大号的分散式布告栏系统,吸引而来的人数居然很快地超过了ARPANET。但是PDP-10的黑客们并不接受Unix,比起他们那复杂华丽,令人爱不释手的LISP与ITS,C与Unix简直原始的令人好笑。“一群穿兽皮拿石斧的野蛮人”他们咕哝著。
里奇 在这时,又有另一股新潮流风行起来。1975年第一台PC问世了;苹果电脑在1977年出现。微电脑的潜力,立刻吸引了另一批年轻的黑客。他们最爱的计算机语言是BASIC,由于它过于简陋,PDP-10的死忠派与Unix迷们根本不屑用它,更看不起使用它的人。
1980年同时有三个黑客文化在发展,尽管彼此偶有接触与交流,但还是各玩各的。ARPANET/PDP-10文化,玩的是LISP、MACRO、TOPS-10与ITS。Unix与C的拥护者用电话线把他们的PDP-11与VAX机器串起来玩。还有另一群散乱无秩序的微电脑迷,致力于将电脑科技平民化。
谁也没有想到,30年后Unix操作系统仍会被人们广泛使用。1983年,当计算机协会将年度奖颁给两位时,如此评价道:“Unix系统的成功源于几个关键想法的最佳选择,和对这些构想的完美实施。Unix系统的模型经过一代软件设计师的努力,带来了全新的编程思维。Unix天才之处在于它的结构,它使程序员可以在其它人的工作基础上工作。”通过C语言和Unix,可以使软件低成本,大规模地应用。
贝尔实验室的最后版本为32/V,以后来自AT&T的所有Unix版本,从最初的System III到后来的System V,都由注重稳定性的商业版本的不同组织管理。伴随着Unix的商业化,贝尔实验室的研究员开始感到作为兴起的Unix研究的源头有些力不从心了。当研究社团继续修改Unix系统时,他们发现需要有一个组织能开发研究版。由于伯克利对Unix开发的介入很早,且具有发布基于Unix实用程序的历史,伯克利很快步入并取代了先前贝尔实验室的角色。
事实上,互联网上运行的大多数操作系统就是Unix。1993年,AT&T将Unix卖给Novell。1995年,Novell又将它卖给圣克鲁斯丁。如今,象SCO、IBM、Digital、HP和Sun等都有不同的版本,造成了市场的混乱,成为微软Windows NT攻击的致命弱点。UNIX的领地正被Windows NT蚕食,不是因为NT的技术更先进,而是因为竞争。当几个UNIX兄弟为竞争而标新立异时,却被版本单一的NT抢占了市场。人们需要竞争带来的低价和技术进步,而不是互不通用。苹果比之于PC兼容机的失败是一个绝好的例子。
因此可以毫不夸张地说,Unix的成功与其内在的黑客理想密不可分。后来,Linux的崛起延续了这种精神。在商业化如火如荼的今天,面临灭绝的黑客精神将使IT业失去许多宝贵的创新动力。
汤普生和里奇在成名以后,都没有走办公司、挣大钱的路,他们仍在贝尔做他们喜爱做的事,而且还一直保持着他们历来的生活习惯和作风,常常工作到深夜,在贝尔是出名的“夜猫子”。里奇在接受记者采访时,就自称自己是 “definitely a night person”。里奇1983年接受图灵奖时已经42岁,但仍然单身。
汤普生围绕UNIX的开发工作于1978年结束。之后,他从事过的项目有“Plan 9”,这是另一个操作系统。此外,鉴于他自幼爱好下棋,他还建造过一台名为“Belle”的下棋计算机,还与康顿(Joseph Condon)合作,在PDP-11/23, PDP-11/10上编制了下棋程序,这个程序从1979年到1983年在连续几届计算机世界比赛中都独占鳌头,成为“四连冠”,同时也成为被美国围棋联盟VSCF授予“大师”称号的第一个下棋程序。这个程序每秒可考察15万个棋步,与现今IBM的“深兰”当然无法相比,但在当时却是一个了不起的成就。
Ken Thompson UNIX的开发是以汤姆泼逊为主的,但为什么文献资料中一提到UNIX,都一致地说是里奇和汤姆泼逊共同开发的,而且在“排名”上往往是里奇在前,汤姆泼逊在后。包括1973年首次向社会推介UNIX的论文的署名,里奇也是第一作者,汤姆泼逊则为第二作者。这里有两个很重要的因素。首先,UNIX的成功应归功于它的创新。UNIX吸取与借鉴了Multics的经验,但是UNIX在继承中又有创新,它采用了一些新方法,比Multics更高明一些。正是在这些方面,里奇发挥了很重要的作用,使UNIX独具特色。其次,UNIX成功的一个重要因素是它的可移植性。正是里奇竭尽全力开发了C语言,并把UNIX用C重写了一遍,这才使它具有了这一特性。
1983年10月,ACM在年会上向汤普生和里奇颁奖。当年ACM还决定新设立一个奖项叫“软件系统奖”(Software System Award),奖励优秀的软件系统及其开发者。而首届软件系统奖评选结果中奖的还是UNIX。这样,这届年会上汤普生和里奇成了最受关注的大红人,他们同时接受了“图灵”和“软件系统”两个大奖,这在ACM历年的颁奖仪式上也是从来没有过的。
里奇发表的图灵奖演说题为“对软件研究的反思”,汤普生的演说题为“对深信不疑的信任的反思”。此外,两人还从两个著名的杂志那里获得奖励和荣誉。一是《电子学》(Electronics)周刊,它从1974年起设立“成就奖”,奖励在电子线路、工艺、仪器设备等方面有重大发明创造的科学家,曾经获得该项奖励的人中包括著名的提出“摩尔定理”的英特尔总裁摩尔,MOS工艺的发明者里奇曼,发明软盘的舒加(A.F.Shugart)等。但由于UNIX和C的巨大成功和影响,使1982年的这个奖破例授予了软件开发者汤姆泼逊和里奇。二是读者面很广的《Datamation》月刊,它于1987年创刊30周年时建立了一个“计算机名人堂”,首批30位名人中包括图灵、冯•诺伊曼及多位图灵奖得主,如克努特(D.Knuth)、巴科斯(J.Backus)、麦卡锡(J.McCarthy)等。第二年首次增补名人,就选中了汤普生和里奇。 里奇从来没有间断过在计算机及其操作系统方面的工作。也因此,他所领导的研究小组开发出了Plan 9 和Inferno。目前,他担任朗讯科技公司(原属于AT&T)贝尔实验室的计算科学研究中心系统软件研究部的主任一职。该中心位于美国新泽西州的Murray Hill。他是美国国家工程学院院士,贝尔实验室杰出研究人员。他获得过许多项荣誉,包括计算机协会图灵奖,IEEE奖章、NEC C&C基金会奖以及美国国家技术奖。
面对记者,最近里奇畅所欲言,从谈话中我们可以很好地了解这位名人的最新心里历程。 问:如同许多孩子对超人崇拜一样,全世界也有很多的 C 程序员和 UNIX 迷把你当成了他们的偶像。你能谈谈这种被众多人崇拜的感觉吗?根本无法想象如果这个时代没有了 UNIX 和 C 会变成怎样。当你在创造 C 和 UNIX 的时候,你想过它们将会成为计算机科学的“未来”吗?
Dennis:这两个问题非常相似也经常被问到。显然,我和我的合作者所取得的那些奖励都是很令人振奋的。我们也为能创造一些有真正价值的东西而感到高兴。但是,我们不认为这就是计算机科学的“未来”甚至根本就无法预见到这个学科的最终发展结果会是什么样子。本着“物有所用”的精神我们开始致力于这项研究开发工作,其间还做了一些帮助其他人加入进来的工作。有一点值得我们重视:尽管 Unix 和 C 或者 C++ 的程序是非常有效的,但不可否认的是计算机科学技术领域及其实际产品开发潜力仍然很巨大。这一方面反映在高校的编程语言研究方向上,另一方面也反映在商业软件领域。
问:UNIX 是一个有着悠久历史的操作系统。从它多年前诞生的那一刻起至今,其在网络、硬件、服务及应用方面的兼容性和需求都发生了非常巨大的进展。面对现在和不远的将来用户的需求,你认为 UNIX 目前存在那些限制或者说是障碍?
总统克林顿颁奖 Dennis:从基本的系统 API(“系统调用”)上来看,我认为没有什么基本原理或者技术上的限制。当然,只要 Unix 之间以及现在出现的各个“免费”Unix 供应商(包括Linux 和 BSD 在内)之间的竞争存在,大量的商业/政治的争论就会出现。
问:回顾一下你在贝尔实验室的工作,你看起来每时每刻都在做着自己真正喜欢的项目。我可不可以假设你也是出于同样的喜欢 Inferno 才致力于它的开发呢?我断言:你真正热爱 UNIX 和 C 的设计工作,是不是这样呢?很多公司做出决定开始开发 Linux 下的软件(包括贝尔实验室的 Inferno 也有了与 Linux 的接口),你是如何看待 Linux 的全部动力及上述现象的呢?
Dennis:我确实喜欢我在贝尔实验室的工作(而且还将继续下去)。我认为 Linux 现象是非常让人高兴的事情。因为它强烈的震撼了 Unix 提供的基础。尽管还有象 BSD 这样的不但品种多而且还得到了工作站及大型机制造商支持的 Unix 存在,而 Linux 看起来才是最健康的 Unix 派生系统之一。当然,还有一种现象不得不引起我的关注。那就是这个源于 Unix 的“免费资源”世界也正在陷入分裂和竞争之中。而这中分裂和竞争的现象是一直存在于商界的。
问:还有一个关于 Linux 的大问题:你用过 Linux吗?如果用过的话,你对它的看法如何? Dennis:事实上我还没有真正的使用过它。如果把我日常的计算都搬到它上面来,这在我看来说恐怕是不能接受的。我本人的计算世界是个由 Plan 9、Windows 及 Inferno 构成的奇怪组合。我非常欣赏 Linux 的生气和活力。时常有人问我一个非常相似的问题,仿佛是为了等着我对 Linux 与 Unix 之间由商业公司挑起的版权及商标争端表示我的愤怒或嫉妒。但是我一点也没有这种感觉,相反我认为二者都是肯和我还有其他人多年前那些思想的延续。
Ken Thompson,C语言前身B语言的作者,Unix的发明人之一(另一个是Dennis M. Riche老大,被尊为DMR),Belle(一个厉害的国际象棋程序)的作者之一,操作系统Plan 9的主要作者(另一个是大牛人Rob Pike, 前不久被google挖走了)。Ken爷爷也算是计算机历史上开天辟地的人物了。1969年还是计算机史前时代,普通人都认为只有大型机才能运行通用的操作系统,小型机只有高山仰止的份儿。至于用高级语言来写操作系统,更是笑谈。Ken爷爷自然不是池中物,于是他和DMR怒了,在1969年到1970间用汇编在PDP-7上写出了UNIX的第一个版本。他们并不知道,一场轰轰烈烈的UNIX传奇由此拉开了序幕。Ken爷爷在1971年又把Unix用C重写,于是C在随后20年成就了不知多少豪杰的梦想和光荣。Ken爷爷还有段佳话:装了UNIX的PDP-11最早被安装在Bell Lab里供大家日常使用。很快大家就发现Ken爷爷总能进入他们的帐户,获得最高权限。Bell Lab里的科学家都心比天高,当然被搞得郁闷无比。于是有高手怒了,跳出来分析了UNIX代码,找到后门,修改代码,然后重新编译了整个UNIX。就在大家都以为“这个世界清净了”的时候,他们发现Ken爷爷还是轻而易举地拿到他们的帐户权限,百思不解后,只好继续郁闷。谁知道这一郁闷,就郁闷了14年,直到Ken爷爷道出个中缘由。原来,代码里的确有后门,但后门不在Unix代码里,而在编译Unix代码的C编译器里。每次C编译器编译UNIX的代码,就自动生成后门代码。而整个Bell Lab的人,都是用Ken爷爷的C编译器。
Dennis M. Ritchie简介 编辑本段 回目录
许多重要人物之所以成名,或者是因为其改变了历史或者是因为其创造了历史,Dennis Ritchie 属于后者。当我们中的大多数人还在姗姗学步的时候,他就开发了“C”语言——这种最有效、最通用的编程语言。当然,这里不必再次强调这项成果给人类的带来巨大贡献。 然而,他的成就不仅仅是这些。Dennis Ritchie还和Ken Thompson一起开发了Unix操作系统,就是 OS。可以说:是他创造了UNIX。 他从来没有间断过在计算机及其操作系统方面的工作。也因此,他所领导的研究小组开发出了 Plan 9 和 Inferno。 他的工作得到了很多计算机组织的公认和表奖,如:美国计算机协会(ACM)授予的系统及语言杰出论文奖(1974);电气和电子工程师协会(IEEE)的 Emmanuel Piore 奖(1982);贝尔实验室特别人员奖(1983);美国计算机协会(ACM)的图灵奖(1983); NEC公司的 C&C 基金奖(1989);电气和电子工程师协会(IEEE)的优秀奖章(Hamming Medal)(1990), 等等。 目前,Dennis M. Ritchie 正担任贝尔实验室/朗讯科技公司(原AT&T实验室)下属的计算科学研究中心系统软件研究部的主任一职。该中心位于美国新泽西州的 Murray Hill。
Unix时代的开创者Ken Thompson(1943~) 编辑本段 回目录
自图灵奖诞生以来,其获得者一直都是计算机领域的科学家与学者,而在所有这些界的图灵奖中只有唯一的一界有个例外,那就是Ken Thompson与Dennis M. Ritchie,他们都是计算机软件工程师。
Ken Thompson,1943年出生于美国新奥尔良。1960年,Ken进入加州大学伯克利分校主修电气工程。1965年从伯克利毕业后,又花了一年的时间在该校取得了电子工程硕士的学位。不知道是时代造就英雄,还是英雄顺应时代而生,在Ken读书期间,正好赶上了计算机时代蓬勃发展的起步阶段,自小喜欢电气的Ken接触到计算机后,立即完全沉迷了进去,从1962年的开始,他就在学校的计算机中心找到份工作,专门负责程序的编写。这也为其后他一手开创的Unix时代奠定了良好基础。
1966年离开校园的Ken加入了贝尔实验室。那时的计算机系统还是批处理的天下,程序员只能在又慢又笨重大型机上工作,一般来讲是先将程序卡片装入设备,然后再等1个小时再过来取回运算的结果,其效率之低可想而知。应市场的需要,当时贝尔实验室与麻省理工学院以及通用电气公司联合开发了一个多用户分时操作系统,取名为Multics(多路信息计算系统),Ken当时就是这个系统的开发人员之一,在开发Multics的期间,Ken创造出了名为Bon的编程语言。可惜因为这个系统不但开发周期长,成本高,而且庞大而缓慢,市场前景完全不被看好,最后贝尔实验室从这个项目中撤了出来。这对于Ken而言,简直是个巨大的不幸,因为他自己用写的一个“star travel”游戏就是完全基于Multics的,退出Multics项目意味着Ken将没有机器可以再玩这个游戏了。
面对此情此景,Ken作为一个创造者的本性立即体现了出来,于是他决定自己写一个操作系统来满足他玩游戏的需要,说干就干,Ken找到了一台废弃已久的老式PDP-7,并在这台机器上重写了他的游戏。在这个过程中,Ken有了一个主意,要开发一个全新的操作系统。利用PDP-7上的汇编语言,Ken只花了一个月就编写完了操作系统的内核,在这个一个月中,他一周一个内核,一个文件系统,一个编辑器和一个编译程序的完成。做完这个系统后,Ken将其命名为UNiplexed Information and Computing System,缩写为 UNICS,后来做了一下改动,称为UNIX,在开发第一版Unix的过程中,Ken还开发出一种新的语言,即C语言的前身——B语言,这种语言简洁明了,接近于硬件语言,第一版的Unix就是基于B语言来开发的。
Unix的出现开始虽然并不为大家所看好,但是却引起了贝尔实验室另一位同事的注意,这就是Dennis M. Ritchie,于是Dennis主动加入了进来共同完善这个系统。至此一场轰轰烈烈的Unix的传奇时代才真正的拉开了序幕。1972年,他们联手将Unix移植到当时最先进的大型机PDP-2上,由于Unix是如此的简洁、稳定与高效,以至于当时大家都放弃了PDP-2上自带的DEC操作系统,而完全改用Unix,这时的Unix已经开始走向成熟了。在1973年之前Unix还不太为外界所知,到同年10月,Unix在IBM举办的操作系统原理专题研讨会上被提及,当Ken和Dennis在会上宣读论文并展示Unix后,整个会场轰动了,大家都立即涌上来索取这种新型的操作系统的程序。随着Unix的需求量的日益增加,Ken与Dennis决定将Unix进一步改写,以便可以移植到各种不同的硬件系统,由于Unix的原码中不少是用汇编完成,不具备良好的移植性,正好Dennis在1973年在B语言的基础上开发出了C语言,C语言灵活,高效性,与硬件无关,并且不失其简洁性,正是Unix移植所需要的法宝,于是旧版的Unix与C语言完美结合在一起产生了新的可移植的Unix系统。随着Unix的广泛使用,C语言也成为了当时最受欢迎的编程语言一直到延续至令。
说到Unix与C语言,还有一段小故事,当时安装了Unix的PDP-11被放在贝尔实验室供大家使用,有一天大家伙发现Ken总是可以得到最高的权限轻松进入他们的帐户,在贝尔实验室这种高人云集的地方,这简单是太不能容忍了,于是有若干高人跳了出来,仔细分析Unix代码,找到后门,修改后再重新编译整个Unix,当所有人都以为这个世界应该从此清静了的时候,却发现Ken还是很容易就取得了他们的帐户权限,为此大家郁闷不已。至到很多年后,Ken才道出其中的原委,原来代码里确实存在后门,不过并不在Unix代码中,而是藏在编译Unix的编译器里,每次编译器编译时就会自动加入后门代码,而当时整个贝尔实验室都用的是Ken所写的C编译器。
由于Unix与C语言的深远影响,1983年美国计算机协会将当年的图灵奖破例颁给了作为软件工程师的Ken与Dennis,并在当年还决定新设立一个奖项――软件系统奖,以奖励那些优秀的软件开发者,当然首个软件系统奖也是非他们两人莫属了。
虽然Unix与C语言让Ken与Dennis功成名就,但是他们两人都没有走那些IT史上自己创业的通用套路,而是一直留在贝尔实验室从事其喜爱的软件开发工作。到了2000年12月时,Ken正式退休,离开了工作了几十年的贝尔实验室开始享受他晚年的时光,但是Ken怎么能闲得下来呢,于是他干脆将他的另一个爱好:飞机,变成正式的职业,成为了一名专职的飞行员。至此,他所开创的Unix时代已经完全与他无关了。
C语言之父Dennis Ritchie逝世 编辑本段 回目录
令人悲伤的消息不止一个,现代计算机操作系统 Unix 之父、C 语言之父 Dennis Ritchie 辞世,IT 产业连续失去了两名重要的人物。根据 Ritchie 的前同事 Rob Pike 在 Google+ 透露的消息 ,Ritchie 10 月 9 日病逝,享年 70 岁。
1941 年,Ritchie 出生在纽约 Bronxville,后来到哈佛大学学习应用数学与物理学毕业,1967 年他进入贝尔实验室。1968 年,他遇到一生中重要的伙伴 Kenneth Thompson。和 Ritchie 背景不一样,在晶体管还是一个新事物的时候,Thompson 就已经是电子发烧友。Ritchie 的理论能力与 Thompson 的动手能力正好形成互补,他们两人后来组成了优秀的团队。
在当时,两人都喜欢“研究计算机科学上有趣的问题”,决定开发一个操作系统,但当时贝尔实验室刚在 Multics 上遭遇挫折,因此不是寻找官方支持的好时间。Thompson 没有放弃,他发现一台废弃的 PDP-7 小型机,但还能用。于是,两人开始在这台小型机上工作,后来开发工作转移到一台 PDP 11 去。Unix 的开发主要由 Thompson 完成,但 Ritchie 在开发过程中提供了理论上的支持,确保开发过程的顺利。经过 3 年努力,第一版 Unix 发布,成为贝尔实验室最重要的发明之一。 尽管 Unix 在发布后受到同僚的欢迎,但 Ritchie 和 Thompson 在尝试把应用程序转移到其它机器的时候,出现报错的情况,于是他们决定开发出一个可移植到其它机器上的操作系统,然后在那个系统下运行自己的应用程序。在经过斟酌之后,他们决定采用更为高级的程序语言来重新编写 Unix。但这样的语言当时还没出现,于是研发任务交给了 Ritchie,他在 B 语言的基础上,发明了 C 语言。1973 年,重新编写的 Unix 上线,真正成为现代通用性操作系统。而 C语言,历经多年,长久不衰,至今依然是最流行的程序语言之一。
基于在 Unix 操作系统方面的卓越贡献,Ritchie 于 1983 年和 Ken Thompson 一同获得了图灵奖(Turing Award),并在 1998 年克林顿时代获得了美国国家技术奖(the National Medal of Technology)。
Ritchie 与 Thompson,是 IT 产业蛮荒时代的英雄。基于优秀的科学素质与开阔的视野,他们克服艰难,完成各种开拓性的工作,他们的工作成果成为众多后来者发展的基石。致敬!
C语言之父辞世引发“分号”悼念 编辑本段 回目录
昨日,在众多的国际互动论坛上,计算机爱好者们以特有的方式纪念这位编程语言的重要奠基人。许多网友的发帖中没有片言只字,仅仅留下一个分号“;”。 在C 语言中,分号标志着一行指令语句的结束,网友们以此来悼念“C语言之父”,美国著名计算机专家丹尼斯·里奇(Dennis Ritchie)所引领的时代悄然远去。
在日益纷繁复杂的程序设计语言王国中,C语言因其简洁、有效、通用的特性而始终占据一席之地。被誉为“C语言之父”,同时也是操作系统Unix之父的C语言发明人之一丹尼斯·里奇10月9日以70岁之龄辞世。 生于1941年9月9日的丹尼斯·里奇曾在哈佛大学学习物理学和应用数学,1967年他进入贝尔实验室,并曾经担任朗讯技术公司系统软件研究部门的领导人。 1983年,美国计算机协会将当年的图灵奖破例颁给了作为软件工程师的肯·汤普逊与里奇,获奖原因是他们“研究发展了通用的操作系统理论,尤其是实现了 Unix操作系统”。并且,美国计算机协会当年还决定新设立一个奖项软件系统奖,以奖励那些优秀的软件开发者,首个软件系统奖当然也是非他们两人莫属。 尽管通过Unix拿奖拿到手软,但令里奇引起最大关注和反响的则是C语言的问世。1999年,里奇和汤普逊为发展C语言和Unix操作系统一起获得了美国国家技术奖章。 虽然在C语言之后,C++、Java等各式各样计算机高级语言层出不穷,但不少程序员仍旧认为,C语言简洁、高效、灵活的特性令其具有独特魅力。“现在的程序编写朝着越来越冗长庞大的方向发展,而C语言虽然属于相对‘低级’的编程语言,但它的简洁之美是无可替代的。”一位电脑程序员道出了自己格外青睐C 语言的原因。 和里奇所创造的C语言一样,Unix系统也同样具有简洁、朴素、小巧的特性。但正如里奇自己所说的那样,“Unix系统是一个简单基本的操作系统,但学会欣赏简洁需要天赋。”而里奇本人,尽管在软件发展史上占有举足轻重的地位,也同样在从事的领域辛勤而低调地耕耘近40 年。 在悼念里奇的论坛上,众多粉丝表达了对这位“C语言之父”常年坚持的敬意,一位粉丝留言表示:“感谢丹尼斯·里奇,令我们拥有这一简洁而美丽的语言。” 而谷歌工程师派克则在Google+中称:“我获知丹尼斯·里奇在忍受了长期的病痛折磨后在家中去世。此外,我没有获得更多的信息。” 延伸阅读 “C语言之父”也是“黑客之父” 由于C语言和Unix两项成就,里奇成为许多编程爱好者膜拜的对象。里奇在1978年出版的《C程序设计语言》被程序员们称为“白皮书”,获得狂热拥戴。 然而,由于C语言的简洁和高效,也成为入侵他人电脑的利器之一。里奇因此被诸多电脑黑客尊为导师,虽然里奇本人并不认可这一说法。 在Unix研发成功后不久,安装了这一程序的PDP-11被放在贝尔实验室供大家使用。有一天,大家发现两位创始人总是可以得到最高的权限轻松进入他们的帐户,在贝尔实验室这种高人云集的地方,这简直是太不能容忍的事情了。于是,若干愤懑的同事仔细分析Unix代码,找到后门,修改后再重新编译整个 Unix程序。当所有人都以为这个世界应该从此清静了的时候,却发现他们的帐户权限还是很容易泄露。直到很多年后,肯和里奇才道出其中的原委原来代码里确实存在后门,不过并不在Unix代码中,而是藏在编译Unix的编译器里。 为玩游戏研成C语言 作为一门伟大的编程语言,C语言是借助Unix操作系统的翅膀而起飞的,Unix操作系统也由于C语言的存在而得以快速落地生根,两者相辅相成,成就了软件史上最精彩的一幕。 不可思议的是,当初Unix这个操作系统的诞生,并不是为了推向市场,甚至不是为了让更多人使用,而仅仅是作者为了方便自己使用,而且初衷是为了能更流畅地玩游戏。连Unix这个别扭的名字,也是对早期一个名为Multics操作系统开玩笑的称呼。 1967年,里奇参与的第一个项目是Multics,这是一个操作系统项目,被设计在大型计算机主机上运行,但是由于整个目标过于庞大,糅合了太多的特性,Multics的性能很低,最终以失败而告终。Multics项目的开发者之一肯·汤普逊则继续为GE-5开发软件,并最终编写了一个新操作系统项目,能够支持同时的多用户操作,也就是后来的Unix。 在不经意间,奇迹诞生了,由于Unix诸多优点,人们将它称为软件中的瑞士军刀。这再一次验证了IT业的创新往往是兴趣,而不是大把大把的金钱使然。 最初的Unix是用汇编语言编写的,一些应用是由叫做B语言的解释型语言和汇编语言混合编写的,在移植的过程中遇到不少麻烦。早在对Multics项目调整过程中,就迫切需要一门高级计算机语言做工具,为了解决程序的可移植性问题,肯·汤普逊和丹尼斯·里奇决定对它进行简单改进,形成NB语言。但NB在 Unix的移植方面依然不尽人意,此后里奇又对NB语言做了改进,C语言诞生。 这被计算机界认为是一个划时代的动作,C语言让Unix能够轻易地被移植到各种不同的机器上,为Unix的迅速普及立下汗马功劳。(记者 沈衍琪 )《北京日报》
C语言之父丹尼斯·里奇:乔布斯脚下的巨人肩膀 编辑本段 回目录
丹尼斯·里奇(站立者)与肯·汤姆森 于1972年于一台PDP-12前合影 (照片来源:贝尔实验室提供 )
人们对里奇的纪念,远不及对乔布斯铺天盖地的悼念。可是,里奇值得人们那样去做。
还是有人出来说了句公道话。
“史蒂夫·乔布斯上周去世引发了巨大的反响,这当然合情合理。即便影响实际上更为广泛,丹尼斯却不为公众所知”,罗伯·派克说。罗伯是一名在Google工作 的程序员,作为业界的传奇性人物 ,曾经与里奇在著名的贝尔实验室 共事20年。
周三晚间,派克在Google+上发表消息 称,在与病魔进行长久的抗争后,里奇于上周末在新泽西的家中溘然长逝。虽然在技术圈内引起大量反响,但在主流媒体 上,里奇却没有得到同巨大影响相称的悼念 。丹尼斯·里奇作为C语言之父,和贝尔实验室资深研究员肯·汤姆森一起使用C语言开发了Unix,当今世界大量依赖的操作系统,其中包括史蒂夫·乔布斯治下的苹果帝国。
“现下互联网基本都在用这两样东西:C语言和UNIX”,派克对《连线》杂志称,“浏览器是用C语言写的。UNIX的内核——基本上是因特网运作的基础——也是用C写的。Web服务器也是用C语言写的,如果不是的话,那就是用Java或者C++写的,两者都是C语言的派生;要不就是Python或者Ruby,用C语言实现的。然后我几乎敢保证,运行这些程序的网络硬件,是用C语言开发的软件驱动的。”
“几乎很难夸大丹尼斯在信息经济基础设施方面无所不在的影响力。”
他补充说,Windows曾经也是用C语言编写,而UNIX同时也支撑了苹果桌面操作系统Mac OS X,以及iPhone与iPad的操作系统iOS。“如果说乔布斯是台前之王,那里奇就是幕后之王。”MIT电气工程与计算机系教授Martin Rinard如此评价道。Rinard也是计算机科学与人工智能实验室的成员。
“乔布斯的过人之处在于其品位独特,打造人们为之着迷并引人注目的产品。而里奇却擅长于开发一些技术人员使用的基础设施,天天被人们使用却不为人知。”
从B语言到C语言
为了更好开发UNIX,丹尼斯·里奇而发明了C语言。最初的UNIX内核使用汇编语言编写,之后他们很快决定要用一种高级语言,让他们更好的驾驭操作系统中的复杂数据。1970年左右,他们尝试使用Fortran,不过没有达到预期目标。接着,在汤姆森创立的B语言基础上,里奇提出了一门新语言。
不管你是从哪里听来的消息,B语言得名于汤姆森的妻子Bonnie,抑或是BCPL ,一门剑桥于60年代中期开发的语言。
B语言是一种解释性语言——意味着它由一个运行于CPU之上的中间件解释执行——而C却是一门编译语言。它被翻译成机器代码,在CPU上直接执行。即便如此,C当时被认为是一门高级语言。C语言提供了里奇和汤姆森想要的灵活性,却也很快。
C语言的第一个版本和现在的样子相差不太多,相对简单点。它可以自定义数据结构和类型并声明变量,里奇和汤姆森就是用它编写了UNIX新内核。“他们发明了C来开发程序”,十年之后加入贝尔实验室的派克说,“而那个程序就是UNIX内核。”
关于里奇一直流传的一个笑话是:C语言同时拥有了“汇编语言的强大能力以及...汇编语言的便利性”。换句话说,他承认C语言并不完美,并且十分接近硬件层次。如今C语言被认为是一门低级语言而不是高级语言。不过这个笑话并不公平。C语言提供了真正的数据结构概念,从这个角度来说已经足够高级了。
“当你在编写一个大型程序——比如UNIX——你必须管理好各种各样模块之间的交互:所有用户、文件系统、磁盘、程序执行等等。而有效的管理则需要良好的数据表示,这就是所谓的数据结构”,派克说。
“在没有数据结构组织的情况下,编写一个与UNIX一样一致和优雅的内核基本上是不可能的。需要一个机制组织好数据,而Fortran却不擅长于此。”
在那个时候,写一个操作系统并不多见,这也给了里奇和汤姆森机会,在70年代末把操作系统移植到其它平台。“从此UNIX洪水之门被打开”,派克说,“这全都多亏有了C语言。”
苹果、微软及其他
与此同时,C语言也开始传播到全世界,从贝尔实验室到全世界的大学,也到了微软,一个在80年代异军突起的软件公司。“C语言的开发是一个重大的飞跃,是个很好的折衷...C语言达到了完美的平衡,让你在较高层次高效率开发的同时,却不失去对每处细节的控制”,NVIDIA和贝尔的首席科学家兼斯坦福大学工程系教授Bill Dally说。“它为之后数十年来软件开发定下了基调。”
正如派克指出的那样,C语言内置的数据结构后来发展出面向对象范式,被现代编程语言如C++和Java大量采用。
1973年,里奇发表了关于这门语言的论文,被认为是革命开始的标志。5年后,他和同事布莱恩·克尼汉(Brian Kernighan)发布了C语言的权威著作:《C程序设计语言》。该书最早是克尼汉为C语言编写的教程,后来他拉着丹尼斯一起把书写完。
当派克还在多伦多大学读本科的时候,在一个因病返家的下午里读到了这本书。“那本参考手册相对于其他的手册而言,简直就是清晰和可读的典范。毋庸置疑是一部经典之作。”,他说,“我生病躺床上翻一翻,没想到竟让我忘记了病痛。”
和许多大学生一样,Pike那时已经开始使用C语言了。由于贝尔实验室开始分发UNIX源代码,它逐渐风靡大学校园。此外,UNIX还催生了现代开源运动。这并不是什么言过其实,里奇的影响之大怎么说都不为过。即便里奇在1983年获得的图灵奖和1998年获得的国家技术勋章也不能完全彰显他的贡献。
在克尼汉和派克眼中,里奇是一个少有的孤僻的人。“我和他一同工作了超过20个年头,但还是觉得不是很了解他这个人”,派克说。但这并不是他低调的理由。史蒂夫·乔布斯也是一个孤僻的人,只不过保持低调只使得人们对他的崇拜有增无减。
里奇所处的时代和工作环境与乔布斯千差万别,这也许是他未得到应得纪念的原因。但是,他留下的遗产总有大佬能够明白。“众所周知牛顿说过他是站在巨人的肩膀上”,克尼汉说,“我们都站在丹尼斯的肩膀上。”
Jon Stokes对此文亦有贡献