简洁性是工程设计的最高美德
C 语言的设计原则是:提供接近机器的控制能力,同时用最少的语言概念实现最大的表达力。里奇认为设计应该去掉所有不必要的复杂性,让核心机制清晰可见。
来源:The C Programming Language, Brian W. Kernighan and Dennis M. Ritchie, Prentice Hall, 1978 / The Development of the C Language, Dennis M. Ritchie, ACM SIGPLAN History of Programming Languages Conference, 1993
统一抽象降低系统复杂度
Unix 的「一切皆文件」哲学:将设备、管道、网络套接字都统一为文件描述符,让程序员用同一套接口处理所有 I/O,极大降低了系统编程的认知复杂度。
来源:The Unix Time-Sharing System, Dennis M. Ritchie and Ken Thompson, Communications of the ACM, 1974
小工具组合胜过单一大系统
Unix 设计哲学中的核心原则:每个程序只做一件事并做好;程序之间通过管道组合。这一设计原则使得 Unix 工具在未来 50 年依然具有生命力。
来源:The Bell System Technical Journal, Special Issue on the Unix Operating System, July-August 1978 / The Art of Unix Programming, Eric S. Raymond, Addison-Wesley, 2003 (documents Ritchie's philosophy)
信任程序员,给予完全控制权
C 语言不做多余的安全检查——没有数组越界检测、没有强制垃圾回收。这基于「程序员知道自己在做什么」的假设,追求最小运行时开销和最大控制权。
来源:The C Programming Language, Brian W. Kernighan and Dennis M. Ritchie, Prentice Hall, 1978
最小必要抽象层
只在能显著降低复杂度的地方引入抽象,不为抽象而抽象;抽象层应该清晰可穿透。
Unix 的文件描述符抽象统一了所有 I/O 操作,但 C 语言不隐藏指针和内存,让程序员保持对底层的完全可见性。
系统设计操作系统语言设计
Unix 小工具哲学
构建只做一件事的最小工具,通过标准化接口(管道/文件)进行组合,而非构建处理所有情况的单一大程序。
`grep | sort | uniq | wc` — 四个小工具通过管道组合,完成比任何单一程序更灵活的文本处理任务。
软件架构工具设计系统编程
自举开发法
用新系统来构建新系统本身——Unix 用 C 语言编写,C 编译器用 C 语言写,工具链的自举证明了系统的完整性。
将 Unix 内核从汇编移植到 C 语言后,用 C 重写 Unix 本身,证明了 C 作为系统编程语言的实用性。
编译器设计操作系统开发基础设施构建
Bell Labs 早期研究期
1967-1969
参与 Multics 项目,探索分时操作系统的设计
里奇加入 Bell Labs 后参与了 Multics 项目,这是 MIT/Bell Labs/GE 的大型分时操作系统项目。Multics 的过度复杂性让里奇和 Thompson 萌生了设计一个更简洁系统的想法。
Unix 与 C 语言创造期
1969-1978
与 Ken Thompson 共同构建 Unix 和 C 语言
这是里奇最重要的创造时期。从 1969 年在废弃 PDP-7 上的 Unix 雏形,到 1972 年 C 语言的成熟,到 1978 年《C 程序设计语言》出版,里奇和 Thompson 完成了计算机科学史上最重要的双重发明。
Bell Labs 成熟研究期
1978-1997
ANSI C 标准化、Unix 商业化演进和持续系统研究
这一时期里奇参与了 C 语言的 ANSI 标准化(1989 年 ANSI C/C89),监督了 Unix 从学术系统向商业产品的演进,并在 Bell Labs 持续进行系统研究。1983 年与 Thompson 获图灵奖是这一时期的顶峰。
晚期研究与传承期
1997-2011
Plan 9/Inferno 操作系统研究,见证后代系统的崛起
Bell Labs 被朗讯科技收购后,里奇继续参与 Plan 9 和 Inferno 操作系统研究。他活到了 Linux 主导服务器市场、Android(基于 Linux/C)成为最广泛部署操作系统的时代,亲眼见证了 Unix/C 遗产的全球化。2011 年 10 月 12 日,里奇在新泽西去世,享年 70 岁。