[翻译]Dennis Ritchie:Steve Jobs 的巨人肩膀

原文来自:http://www.wired.com/wiredenterprise/2011/10/thedennisritchieeffect/

Jobs 和 dmr 老爹前后离开,让很多人不能不将其放在一起谈论。无论如何,他们都是伟大的人。有的时候在很短的时间里,这个世界同时失去两个伟大的人,是一件很难言语的事情。

“If I have seen further it is only by standing on the shoulders of giants.”- Isaac Newton.

仅以此向 dmr 老爹致敬。

———————翻译分割线———————

Dennis Ritchie:Steve Jobs 的巨人肩膀

Cade Metz撰写 2011十月13日 7:14 pm

对 Dennis Ritchie 的悼念完全不能同 Steve Jobs 去世后在 Web 上纷飞的如潮水般的赞美相提并论。但是他们确实如此。

甚至更夸张一些。

“当 Steve Jobs 上周去世后,产生了声势浩大的哀悼活动,而这是另人感动和恰当的。虽然 Dennis 有着更大的成就,但是公众甚至不知道他是谁。”另一个程序界的传奇,现在是一名 Google 人,在著名的贝尔实验室工作的20年里同 Ritchie 每日穿过同一个门廊的 Rob Pike 这样说到。

在周三的晚上,Pike 通过 Google+ 上的一篇留言公布了 Ritchie 与疾病进行了长久的斗争之后,在他新泽西的家中病逝的消息,尽管来自铁杆技术人的响应非常强烈,但整体上来自 web悼念与 Ritchie 对现代社会广泛的影响并不匹配。Dennis Ritchie 是 C 语言之父,并且协同贝尔实验室科学家 Ken Thompson 一起,使用 C 构建了 UNIX,基于这个操作系统的构建是如此之多——包括 Steve Jobs 建立的 Apple 帝国。

“在 web 上几乎所有的事情都用到了这两个东西:C 和 UNIX,”Pike 告诉网友。“浏览器是用 C 编写的。UNIX 内核——几乎整个互联网都运行在其上——也是 C 编写的。web 服务器是 C 编写的,而如果不是用 C 编写的话,那就是用 Java 或者 C++,这些是 C 的衍生,或者 Python 或 Ruby,这些是用 C 实现的。以及所有运行这些程序的网络硬件,我几乎都可以断定是用 C 编写的。”

“现代信息经济是构建在 Dennis 之前所做的工作上,这一点也不夸张。”

他补充到,甚至 Windows 曾经也是用 C 编写的,以及 UNIX 的后继者包括 Apple 的桌面操作系统 Mac OS X,和运行在 iPhone 和 iPad 上的 iOS。“Jobs 是看得见的王,而 Ritchie 是无法看到的万王之王,”MIT 电器工程和计算机科学教授,计算机科学与人工智能实验室成员,Martin Rinard 这样说到。

“Jobs 的天赋在于他构建了那些人们真正喜欢使用的产品,因为他有品味并且可以让事情变得引人注目。Ritchie 构建的东西是技术方面的,可以用于构建核心的基础设施,人们几乎无法接触到,但是每天都在使用的东西。”

从 B 到 C

Dennis Ritchie 构建了 C,因为他和 Ken Thompson 需要一个更好的方法来构建 UNIX。最初的 UNIX 内核是用汇编语言编写的,但是很快他们决定他们需要一个“高级”语言,某些对数据来说可以提供更多的控制能力并且跨操作系统的东西。在整个1970年,他们尝试构建了第二代 Fortran,但是这个并不十分适合,然后 Ritchie 提议基于 Thompson 创造的叫做 B 的语言开发一个新的语言。

不论你相信哪个版本的传说,B 的命名来自 Thompson 的妻子 Bonnie 或者一个由剑桥在六十年代中期开发的语言 BCPL。在任何情况下,从 B 产生了 C。

B 是一种解释型语言——也就意味着它是运行在 CPU 上的软件的一种中间形态——但是 C 是编译型语言。它被翻译为机器码,然后这些机器码直接运行于 CPU 上。不过在那个时候,C 被认为是一个高级语言。它可以为 Ritchie 和 Thompson 提供所需的灵活性,与此同时它很快。

C 语言的第一个版本与现在我们知道的版本并不完全一样——不过还是有些类似的C 语言的第一个版本和我们今天知道的并没有多少不同——尽管它当时还不成熟(thx @ye_hq)。它提供了完整的数据结构和“类型”用于定义变量,而这就是 Ritchie 和 Thompson 用于构建新的 UNIX 内核所使用的。“他们构建了 C 来编写程序,”在 10 年后加入贝尔实验室的 Pike 说到。“而他们要写的程序就是 UNIX 内核。”

Ritchie 的一个玩笑是 C 有着“汇编语言的力量和汇编语言的便利。”换句话说,他承认 C 不是一个绚丽夺目的发明,它仍然非常贴近硬件在运行。今天,它被认为是一个低级语言,而不是高级的。 然而 Ritchie 的玩笑对于这个新语言并不公平。通过提供真正的数据结构,它操作的层面已经足够高了。

“当你编写一个大程序的时候——而 UNIX 正是这种类型——就必须管理各种不同组件之间的相互影响:所有的用户,文件系统,磁盘,程序执行,以及使其能够有效的管理,你就需要能够对正在处理的信息有一个良好的表达。也就是我们所说的数据结构。”Pike 说到。

“在没有数据结构的情况下编写内核,并且使其向 UNIX 一样的保持一致和优雅是一个相当相当难的挑战。需要有一个方法将数据成组的放在一起,而在 Fortran 里是没有办法做到的。”

就当时而言,这样编写操作系统是非同寻常的,而这也使得 Ritchie 和 Thompson 最终设想移植操作系统到其他平台,他们在七十年代末期进行了这个工作。“这开启了 UNIX 运行在任何地方的水闸,”Pike 说到。“这全部都是 C 使其成为现实的。”

Apple,Microsoft,和其超越者

与此同时,C 在它自己的道路上越走越远,从贝尔实验室到世界上其他大学,以及 Microsoft,在二十世纪80年代爆发的软件公司。“使用 C 语言进行开发是一个巨大的进步,且和时宜… C 提供了正确的平衡性,使得可以在更高层面编写并更加产品化,但是当需要的时候,仍然可以控制到底如何处理,”NVIDIA 首席科学家和斯坦福的贝尔工程教授 Bill Dally 这样说到。“(它)加快了程序开发的步伐至少数十年。”

就像 Pike 指出的,Richie 在 C 中构建的数据结构甚至影响产生了现代语言如 C++ 和 Java 所使用的面向对象范型。

革命开始于 1973 年,Ritchie 发表了对语言的研究的论文,五年之后,他和同事 Brian Kernighan 发布了决定性的 C 书籍:C 程序设计语言。Kernighan 编写了这个语言初步的一些指南,然后同时他“扭着 Dennis 的胳膊”一起编写了一本书。

Pike 在多伦多大学就读的时候阅读了这本书,在有一天生病回家的下午拿起了它。“这个参考手册与其他手册相比是清晰和可读的典范。它无疑是优秀的。”他说。“我在病床上阅读了它,而它使我忘记了正在生病。”(译注:如果我说我是靠这本书过的 CET4 会不会有人相信?但是这是真的,它确实燃起了我对学习英语的渴望……)

就像许多大学生一样,Pike 已经在使用这个语言了。由于贝尔实验室捐赠了 UNIX 的代码,使得它风靡于大学校园。特别要提到的是,操作系统开始进入现代开源运动中了。 Pike 在讲述的时候,没有也无法夸大 Ritchie 的工作的影响力,因此即使 Ritchie 在 1983 年获得图灵奖,并且在 1998 年获得美国国家技术奖, 他得到的赞誉仍然无法匹及他的贡献。

如同 Kernighan 和 Pike 说得那样,Ritchie 本人是非同寻常的孤僻。“我与他在同一个屋檐下一起工作了超过 20 年,而我感觉我并不全部了解他,”Pike 这样说。但是这并不能解释为他行事低调。Steve Jobs 是一个孤僻的人,但是他在隐私方面的坚持成为了公众对他个人生活探索的动力。

Ritchie 在与众不同的时间生活,并且在与众不同的环境工作,在这点上他超过了任何人,例如 Jobs。他没有获得应得的这绝对没错。但是那些真正在意的人,都能明白他留下的跨时代的标志。“在牛顿关于站在巨人的肩膀上有一个标准,”Kernighan 说到,“我们都站在 Dennis 的肩膀上。”

附加的内容由 Jon Stokes 撰写。

Comments

One response to “[翻译]Dennis Ritchie:Steve Jobs 的巨人肩膀”

  1. ye_hq Avatar
    ye_hq

    That first version of the language wasn’t all that different from C as we know it today — though it was a tad simpler.
    语言的第一个版本和我们今天知道的并没有多少不同——尽管它当时还不成熟。

Leave a Reply

Your email address will not be published. Required fields are marked *