丹尼斯·里奇[编辑]
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语言。两者均是基于他以前的工作上发展的。
著作
《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。
作为一门伟大的语言,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语言之父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语言和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的迅速普及立下汗马功劳。(记者 沈衍琪 )《北京日报》
“史蒂夫·乔布斯上周去世引发了巨大的反响,这当然合情合理。即便影响实际上更为广泛,丹尼斯却不为公众所知”,罗伯·派克说。罗伯是一名在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个年头,但还是觉得不是很了解他这个人”,派克说。但这并不是他低调的理由。史蒂夫·乔布斯也是一个孤僻的人,只不过保持低调只使得人们对他的崇拜有增无减。
里奇所处的时代和工作环境与乔布斯千差万别,这也许是他未得到应得纪念的原因。但是,他留下的遗产总有大佬能够明白。“众所周知牛顿说过他是站在巨人的肩膀上”,克尼汉说,“我们都站在丹尼斯的肩膀上。”
网络营销词典内容均由网友提供,仅供参考。如发现词条内容有问题,请发邮件至info # wm23.com。