说到c语言就不能不提到c语言之父—Dennis M. Ritchie
Dennis M. Ritchie是朗讯公司贝尔实验室的融合技术、软件和计算机科学实验室的研究人员,公司位于新泽西州莫雷山(Murray Hill)。此前,他在计算机科学研究中心工作(该中心现已解散),任系统科学研究部门的主任多年。
(以下以第一人称叙述)
我于1941年9月9日出生在纽约州布朗克斯维尔(Bronxville),后来在哈佛大学读了本科并进一步深造,我的本科专业是物理学,研究生阶 段学的是应用数学。我的博士论文(1968年)是关于函数的子递归层次(subrecursive hierarchies)。
本科阶段的学习让我明白,以自己的才智还不足以成为一名物理学者,而往计算机方向发展却相当不错。研究生阶段的经历又让我清醒,自己的才智也不足以让我成为算法理论方面的专家。我自己更喜欢过程式语言,而不是函数式语言。
我在1967年加入了贝尔实验室,算是步父亲的后尘,我的父亲Alistair E. Ritchie就在贝尔实验室工作了很长时间。他最让众人所知的成就是与W. Keister和S. Washburn合著了《开关电路设计》(The Design of Switching Circuits),这本书是晶体管时代之前在开关理论和逻辑设计方面很有影响的一本书。
紧接着,我就参与了Multics项目,这是贝尔实验室、麻省理工学院和通用电气公司三方合作的一个项目。我为BCPL语言写一个编译器,这门语言 用于Multics机器(GE 645)和GECOS系统使用的GE 635机器。我还为ALTRAN语言写了编译器,该语言系统是用来做符号计算的。
然后,我帮助Ken Thompson创建了Unix操作系统。等到Unix在贝尔实验室根基牢固,并且用在了一些教育、政府部门,还有了一些商业应用之后,Steve Johnson和我在Ken的帮助下,将这个操作系统移植到了Interdata 8/32机型上。由此证明了Unix是可移植的,这为Unix的广泛传播奠定了基础。在贝尔实验室研究团队推出的第7版的基础上,有了商用的Unix系统 V,也出现了加州大学伯克利分校的BSD发行版。我对Unix的最后一个重要的技术贡献,是互联设备、协议和应用中用到的Streams机制。
在Unix开发的早期,我对Thompson的B语言进行了改造,添加了数据类型和新语法,由此创造了C语言。C是Unix可移植性的技术基础,后 来在许多其他环境下也被广泛采用。从手持设备到超级计算机,各类大小的电脑的许多应用开发和系统开发,都用到了C。这门语言后来出现了统一的美国标准和国 际标准,并且Stroustrup在此基础上发明了后续的C++。
如今,我管理着一个研究小组,推进分布式操作系统、语言、路由和交换硬件等方向的研究。我们团队最近的成就包括:1995年发布的Plan 9操作系统,1996年发布的Inferno操作系统。
我获得过的奖励如下:1974年ACM的杰出论文奖(系统和语言方面);1982年IEEE的Emmanuel Piore奖;1983年贝尔实验室会士荣誉称号;1983年ACM图灵奖;1983年ACM软件系统奖;1989年NEC的C&C基金 奖;1990年IEEE的汉明奖。我在1988年被选为美国工程院院士。1999年4月获得了美国国家技术奖。这些荣誉都是和Ken Thompson一起获得的。
附注:像我这样靠Ken的裙带关系(coat-tails)获得好处的人还真不少。但除了他的夫人Bonnie T.,我是少有的几个真的看见过他着正装(甚至打上黑领结)的人,还见过不止一次。
UNIX
Dennis M. Ritchie在贝尔实验室的第一个任务,是参与大项目Multics,即开发一个前所未有的、可以多人使用的、同时运行多个程序的操作系统。该项目由贝尔实验室、麻省理工学院和通用电气公司三方联合研制,但是由于设计过于复杂,迟迟拿不出成果,1969年贝尔实验室宣布退出。
第一个任务这样无果而终,丹尼斯·里奇很不甘,但也无能为力。谁知过完了夏天,比他小两岁的同事肯·汤普森(Ken Thompson)找上门,说借鉴Multics的设计思路,做了一个个人项目Unix,问他有没有兴趣一起参与。丹尼斯·里奇立刻表示同意,于是两人一 起投入Unix的开发。肯·汤普森的专业是电子工程,丹尼斯·里奇专业是应用数学,正好互补。经过日以继夜的工作,1969年圣诞节前,Unix已经可以 初步运行了。
吸取了Multics设计复杂而导致失败的教训,丹尼斯·里奇将Unix的设计原则定为”保持简单和直接”(Keep it simple stupid),也就是后来著名的KISS原则。为了做到这一点,Unix由许多小程序组成,每个小程序只能完成一个功能,任何复杂的操作都必须分解成一 些基本步骤,由这些小程序逐一完成,再组合起来得到最终结果。
表面上看,这样的设计很低效:为了取得结果,你必须运行一连串小程序,那么为什么不用一个大程序一次运行就得到结果呢?但是事实证明,由于小程序之 间可以像积木一样自由组合,所以非常灵活,能够轻易完成大量意想不到的任务。而且,计算机硬件的升级速度非常快,所以性能也不是一个问题。另一方面,开发 单一目的的小程序,要比开发大型程序容易得多,所以Unix才有可能在短短几个月内问世。
Unix迅速在程序员中流传,到了80年代,已经成为主流操作系统,演变成整个软件工业的基础,当代最主要的操作系统—-Windows、MacOS和Linux—-都与Unix有关。由此可见,丹尼斯·里奇的”保持简单”原则,对计算机时代的影响有多大。
引自图灵社区,翻译-武卫东
原文出处: 阮一峰