C语言之父丹尼斯·里奇:乔布斯脚下的巨人肩膀

标签: 语言 丹尼斯 里奇 | 发表时间:2011-10-19 00:11 | 作者:liujinmarshall Far Soul
出处:http://dongxi.net/

丹尼斯·里奇(站立者)与肯·汤姆森 于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对此文亦有贡献

  查看评论

相关 [语言 丹尼斯 里奇] 推荐:

C语言发明人丹尼斯-里奇去世

- 刘 - cnBeta.COM
维基百科资料显示,美国著名计算机专家、C语言发明人之一丹尼斯・里奇(Dennis Ritchie )已于10月9日去世,享年70岁. 他发明了包括C语言在内的多种编程语言,并研发了Multics和Unix等操作系统.

C语言之父丹尼斯·里奇逝世

- satan - Solidot
美国计算机科学家、C语言和Unix共同作者、图灵奖得主丹尼斯·里奇去世,享年70岁. 丹尼斯·里奇去世的消息是他在贝尔实验室的同事Robert Piket通过Google+透露的. 他说刚刚获悉久病的丹尼斯·里奇在家中去世. 计算机界再次失去了一位伟大的思想家. 里奇与肯·汤普逊共同发展了C语言——世界上使用最广泛的程序语言之一,他共同创造的Unix系统奠定了Linux和Mac OS X的基础.

C语言之父丹尼斯·里奇:乔布斯脚下的巨人肩膀

- Far Soul - 东西
丹尼斯·里奇(站立者)与肯·汤姆森 于1972年于一台PDP-12前合影 (照片来源:贝尔实验室提供). 人们对里奇的纪念,远不及对乔布斯铺天盖地的悼念. “史蒂夫·乔布斯上周去世引发了巨大的反响,这当然合情合理. 即便影响实际上更为广泛,丹尼斯却不为公众所知”,罗伯·派克说. 罗伯是一名在Google工作的程序员,作为业界的传奇性人物,曾经与里奇在著名的贝尔实验室共事20年.

C语言之父和Unix系统共同研制者丹尼斯•里奇去世

- kof2002 - 译言-每日精品译文推荐
莱纳斯·托瓦尔兹曾经就Linux的发展说过,他“[他自己]早就被托在巨人的肩膀上. ”丹尼斯·里奇(亦称dmr)很可能是这些巨人中间最高大的. C程序设计语言的创始人和Unix操作系统的共同研制者里奇于10月8日去世,终年70岁,他的遗产投下很长很长的影子. 由于里奇在Unix神怪般的分时系统方面的成果,我开始从事技术工作.

丹尼斯•里奇:史蒂夫•乔布斯所站的肩膀

- d0ngd0ng - 译言-电脑/网络/数码科技
1972年,(站着的)丹尼斯·里奇和肯·汤普森在PDP-11旁(照片:蒙贝尔实验室惠允). 悼念丹尼斯·里奇无法与史蒂夫·乔布斯死后互联网上滔滔不绝的颂扬之河相比. “上周,史蒂夫·乔布斯去世时,人们呼天抢地,十分感人,也合情合理. 但是,丹尼斯有过更大的影响,公众却不知道他是谁,”罗布·派克说,这位程序设计传奇人物和现在的Googler人在负有盛名的贝尔实验室与里奇相隔一幢办公大楼工作了20年.

美国:传奇电脑科学家丹尼斯.里奇逝世

- hi3w - 牛博山寨头条
传奇电脑科学家丹尼斯.里奇于 2011 年十月八日在纽泽西的家中逝世,享年七十岁,身后留下的是对全球发展的深远影响. 里奇是有史以来最广泛被使用的程式语言 C 语言的创始人. 据 BoingBoing 网站的 Xeni Jardin 在十月十二日所言,这个消息最早是由一名加拿大软体工程师 Rob Pike 在 Google+ 上公开.

保持简单----纪念丹尼斯•里奇(Dennis Ritchie)

- Yousri - 阮一峰的网络日志
大师去世以后,财新网约我写一篇纪念文章. 现在文章已经发表了,我可以把原稿贴出来了. 丹尼斯•里奇对人类的贡献,被大大低估. 此时此刻,全世界几十亿人正在使用的几百亿件电子产品,里面的软件最终都可以追溯到他的智力贡献. 保持简单(Keep it simple)----纪念丹尼斯•里奇(Dennis Ritchie).

O'Reilly呼吁设立丹尼斯·里奇纪念日

- CMGS - Solidot
两周前,加州州长Jerry Brown宣布10月16日为“史蒂夫·乔布斯日(Steve Jobs Day)”,以纪念刚刚去世的苹果联合创始人. 如果说乔布斯改变了世界,那么C语言和Unix之父丹尼斯·里奇(Dennis Ritchie)则是创造了世界. 用里奇贝尔实验室的同事Rob Pike的话说,Unix、Linux、Mac OS X甚至Windows的内核都是用C语言开发的,浏览器和大部分Web服务器也基本上使用的是C或C++,整个互联网生态系统都是基于C、或者是C的派生语言如C++和Java,或者是用C实现的语言如Python和Ruby.

保持简单 - 纪念丹尼斯・里奇

- Far Soul - cnBeta.COM
丹尼斯•里奇对人类的贡献,被大大低估. 此时此刻,全世界几十亿人正在使用的几百亿件电子产品,里面的软件最终都可以追溯到他的智力贡献.

O'Reilly呼吁设立丹尼斯・里奇纪念日

- Woooon - cnBeta.COM
感谢montblanc pens的投递. 两周前,加州州长Jerry Brown宣布10月16日为“史蒂夫・乔布斯日(Steve Jobs Day)”,以纪念刚刚去世的苹果联合创始人. 如果说乔布斯改变了世界,那么C语言和Unix之父丹尼斯・里奇(Dennis Ritchie)则是创造了世界.