C语言与丹尼斯里奇

生平
丹尼·斯里奇生于美国纽约,是贝尔实验室的资深科学家。

里奇在哈佛大学学习物理学和应用数学,毕业后于1967年进入贝尔实验室工作。1968年在哈佛大学Patrick C. Fischer的指导下,发表博士论文〈程式结构与计算复杂性〉(Program Structure and Computational Complexity),但是他始终没有正式获得博士学位。

他亦曾是朗讯技术公司系统软件研究部门的领导人(2007年退休)。1983年他与肯·汤普逊一起获得了图灵奖,获奖理由是他们“研究发展了通用的操作系统理论,尤其是实现了UNIX操作系统”。1999年两人因开发C语言和Unix操作系统一起获得了美国国家技术奖章。

C语言和Unix
丹尼斯·里奇与肯·汤普逊两人开发了C语言,并随后以之开发出了Unix操作系统,而C语言和Unix在电脑工业史上都占有重要的地位:C语言至今在开发软件和操作系统时依然是非常常用,且它对许多现代的编程语言(如C++、C#、Objective-C、Java和JavaScript)也有着重大影响;而在操作系统方面Unix也影响深远,今天市场上有许多操作系统是基于Unix衍生而来(如AIX与System V等),同时也有不少系统(通称类Unix系统)借鉴了Unix的设计思想(如Solaris、Mac OS X、BSD、Minix与Linux等),甚至以Microsoft Windows操作系统与Unix相竞争的微软也为他们的用户和开发者提供了与Unix相容的工具和C语言编译器。

里奇还参加开发了九号计划和Inferno操作系统以及Limbo语言,而这些项目均是基于他以前的成果进一步开发的。

从B语言到C语言
里奇开发 C 语言的初衷,是在与肯·汤普森合作研发 UNIX 系统时需要一种更好的描述性语言。

刚开始,UNIX 内核是使用汇编语言编写而成的。然而随着开发进展,数据量猛增,能够对数据进行有效整理和灵活操作的需求便应运而生。在1970年前后,他们尝试通过改进 Fortran 语言来进行数据管理和操作,却没有达到预想的目的。随即几年后,二人合作公布出了 B 语言。

关于 B 语言的名字由来,传言有两个版本。一说B是为了纪念肯恩的妻子邦妮(Bonnie),另有说法称, B 指代 BCPL,这是上世纪60年代中期由剑桥大学开发出的一种计算机语言。这两种说法孰是孰非并不重要,重要的是 B 语言的命名决定了其后的改进版本被命名为, C 语言。

B 语言是一种解释性语言,也就是说它在软件运行和 CPU 运行中起到中间层的作用。与此不同, C 语言是编译语言,它在运行之前被编译成机器语言,直接在 CPU 上运行,其运行速度非B语言所能比。

最早期的 C 语言和我们如今所使用的版本框架上并没有太大出入,但是功能简化许多。当时为了满足研发新型 UNIX 内核的需要,它主要提供了数据结构和变量类型。

里奇曾开玩笑称, C 语言拥有汇编语言的力量和汇编语言的便利性。这句话的意思是, C 语言的运行方式更接近于硬件系统。但是,里奇的这句玩笑并没有准确定位 C 语言的地位, C 语言所提供的数据结构,力发千钧,足以贯穿所有高层和底层的语言。

巨人的肩膀
革命风潮始发于1973年,里奇发表出第一篇关于C语言的学术性论文。5年之后,他和同事布莱恩·克尼汉撰写出里程碑式的一本书《C程序设计语言》(The C Programming Language)。克尼汉日后回忆说,为了说服里奇加入合著阵营他费尽口舌,他笑称甚至险些“扭断了里奇的胳膊”。

罗伯对于里奇的崇拜正是来源于这本书。当时,他还是多伦多大学里的一名本科生,他回忆道:“我是在病床上第一次读这本书,立马就被其清晰的描述和深入浅出的解读给吸引住了,这种语言和逻辑的清晰准确表达是日后任何教材或者参考手册都无法超越的,它堪称经典,甚至让我忘记了当时正在生病。”

通过这本书,当年如罗伯一样的很多大学生开始使用 C 语言。尤其当贝尔实验室公布出 UNIX 的源代码之后,C语言的风潮已经势不可挡。可以说, UNIX 源代码的公布不仅推进了计算机语言的发展,更决定了日后互联网时代的开源计划是应始之驱。里奇于1983年被授予图灵奖,并且于1998年获得了国家科技勋章。

罗伯介绍说,里奇是一个非常低调地科研工作者。和乔布斯力图形成垄断的个人主义截然不同,里奇一直希望自己的工作能够为更多的科研工作者所用,能够为他人日后的科研工作和科技进展提供便利。

克尼汉评价道:牛顿说他是站在巨人的肩膀上,如今,我们都站在里奇的肩膀上。

这句话,应该是对丹尼斯·里奇先生的一生最有力也是最中肯的评价。