丹尼斯·里奇:数字世界语法的低调奠基人
在一次计算机大会上,丹尼斯·里奇没有去应付他的名字所带来的赞誉,而是干脆跟一个陌生人交换了名牌,以便能安心地探讨技术。对于一个其两项创造——一种编程语言和一个操作系统——如今构成了地球上几乎每一部手机、服务器和笔记本电脑基础的人来说,这是一个再贴切不过的写照,而他自己用一位同事的话来说,“是一个安静且极其注重隐私的人”。
哈佛、物理学与对计算机的半路出家
丹尼斯·麦卡利斯特·里奇(Dennis MacAlistair Ritchie)于1941年9月9日出生在纽约州伊斯特切斯特的布朗克斯维尔,他的父亲是贝尔实验室的一名科学家。他于1963年在哈佛大学获得物理学学士学位,并于1968年获得应用数学博士学位,随后于1967年加入贝尔电话实验室——追随父亲的脚步进入了这家将定义他整个职业生涯的公司。从某些记载来看,他的博士学业在形式上并未完全结束,但到那时,计算机而非物理学已经吸引了他。
从Multics到角落里的PDP-7
里奇在贝尔实验室的早期岁月都花在了Multics上,这是一个由麻省理工学院、贝尔实验室和通用电气联合打造的宏伟的分时操作系统。当AT&T公司于1969年退出这个昂贵且笨重的项目时,里奇和同事肯尼斯·汤普森发现他们手头闲置着一台DEC PDP-7小型计算机,却没有得到批准的项目。随之而来的是在几个月内创造出了一个更精简、更优雅的后继者:汤普森和里奇将这个操作系统称为Unix,在Multics曾经繁复的地方刻意保持简单,并围绕“一套小型可组合的工具能比一个庞大的单一整体做得更多”这一理念构建。
为推动Unix发展而设计C语言
Unix的早期版本主要用汇编语言编写,这使得该系统与特定的硬件紧密绑定——这恰恰是一个新的、可移植的操作系统本应解决的问题。在1971年至1972年左右,当团队致力于将Unix移植到PDP-11时,里奇在汤普森早期更受限制的“B”语言基础之上设计了C编程语言。C语言赋予了程序员可媲美汇编语言的底层控制能力,同时又在不同机器之间保持了可移植性,到1973年,里奇和汤普森用它重写了Unix的核心——这一决定使得Unix能够以先前任何操作系统都无法企及的速度和保真度向新硬件扩散。C语言和Unix相互强化:Unix展示了像C语言这样的语言能够构建出什么样的成果,而C语言在Unix背后的传播使其在十年之内成为世界上使用最广泛的编程语言之一,后来孕育出了C++、Java以及如今在软件领域依然占据主导地位的C语言家族的很大一部分。
一本书、一本手册与一个标准
1978年,里奇与布赖恩·克尼汉合著了《C程序设计语言》(The C Programming Language),这是一本精炼、精确编写的书籍,在正式标准化之前的多年里成为了该语言事实上的规范,并将一代又一代的程序员引入了至今仍用于教授第一行代码的“Hello, world”示例。他此前曾在1971年撰写了《Unix程序员手册》(Unix Programmer's Manual),为贝尔实验室的首批用户记录了该系统。1990年,里奇成为贝尔实验室系统软件研究部门的负责人,在那里他监督了后来的Plan 9和Inferno操作系统——它们在商业上不太成功但在技术上极具影响力,是二十年前产出Unix的同一设计哲学的延伸。
赞誉纷至沓来,却又历经迟来
里奇和汤普森因他们在Unix方面的工作共同分享了1983年的图灵奖(计算机领域的最高荣誉),该奖项的颁奖词将该系统的“通用”设计归功于其随后产生的巨大影响。里奇同年被任命为贝尔实验室院士(Bell Labs Fellow),于1988年当选为美国国家工程院院士,并于1999年与汤普森一起从克林顿总统手中接过了国家技术奖章。2011年,在他去世前不久,他荣获了日本奖。尽管如此,与具有相似重要性的同龄人相比,里奇在很大程度上仍然远离公众生活,很少接受采访,并避开了依附于他的一些硅谷同代人的那种名气。
逝世
里奇于2011年10月在新泽西州伯克利高地的家中逝世,享年70岁,此前他经历了一场长期疾病,在其晚年已基本淡出公众视线。他的逝世发生在史蒂夫·乔布斯去世几天之内,却引发了相对低调的报道——技术界的许多人尖锐地指出这种不平衡,考虑到乔布斯自身产品底层所依赖的操作系统正是直接源自里奇的工作。
为什么丹尼斯被称为天才
里奇被称为天才的理由建立在一种特定且有据可查的智力成就之上:设计抽象——一种语言、操作系统的文件和进程模型——这些抽象在远远超出其使一个实验室的小型计算机变得可用的最初狭隘目的之后,证明是持久且具有生成性的。与他并肩工作的同事(包括罗布·派克)不仅称他为成就卓著,还称他为“一个真正伟大的头脑”,图灵奖委员会关于Unix的颁奖词明确赞扬了一个旨在解决一家公司内部问题但又足够灵活以成为世界上大部分计算基础设施基质的设计的通用性。这与手艺或个人魅力有着本质上的不同:这是概念工程,由有能力对其进行评估的同行来评判,并通过随后五十年中C语言和Unix后代近乎普遍的采用得到了验证。诚实而复杂的现实是,里奇很少独自工作——Unix明确是与汤普森共同创造的,而C语言的设计吸收了早期语言中已经在流传的想法,因此这里的天才具有协作性和渐进性,而不是单一的前所未有的飞跃,而且据所有人所说,里奇本人会拒绝这种标签,认为对于他所认为的实际工程工作而言,这个称呼被夸大了。
遗产
Unix的后代和重新实现——其中包括Linux、BSD和macOS的Darwin核心——如今运行着世界上绝大多数的服务器、手机和嵌入式设备,而C语言在其诞生半个世纪后依然是操作系统和系统编程工作的基础。里奇的影响力不同寻常,因为它几乎完全在水面之下运作:与面向消费者的技术专家不同,他的名字在计算机领域之外基本上不为人知,尽管数十亿人每天都在不知情的情况下依赖他在新泽西州的一个实验室桌旁构建的工具。
