C语言之父丹尼斯-里奇辞世
2011-10-14 14:48:36 阿炯

在众多的国际互动论坛上,计算机爱好者们以特有的方式纪念这位编程语言的重要奠基人,许多网友的发帖中没有片言只字,仅仅留下一个分号“;”。在C语言中,分号标志着一行指令语句的结束,网友们以此来悼念“C语言之父”,美国著名计算机专家丹尼斯·里奇(Dennis Ritchie)所引领的时代悄然远去。



丹尼斯·里奇

在日益纷繁复杂的程序设计语言王国中,C语言因其简洁、有效、通用的特性而始终占据一席之地。被誉为“C语言之父”,同时也是操作系统Unix之父的C语言发明人之一——丹尼斯·里奇10月9日以70岁之龄辞世。

生于1941年9月9日的丹尼斯·里奇曾在哈佛大学学习物理学和应用数学,1967年他进入贝尔实验室,并曾经担任朗讯技术公司系统软件研究部门的领导人。1983 年,美国计算机协会将当年的图灵奖破例颁给了作为软件工程师的肯·汤普逊与里奇,获奖原因是他们“研究发展了通用的操作系统理论,尤其是实现了Unix操作系统”。并且,美国计算机协会当年还决定新设立一个奖项——软件系统奖,以奖励那些优秀的软件开发者,首个软件系统奖当然也是非他们两人莫属。

尽管通过Unix拿奖拿到手软,但令里奇引起最大关注和反响的则是C语言的问世。1999年,里奇和汤普逊为发展C语言和Unix操作系统一起获得了美国国家技术奖章。虽然在C语言之后,C++、Java等各式各样计算机高级语言层出不穷,但不少程序员仍旧认为,C语言简洁、高效、灵活的特性令其具有独特魅力。“现在的程序编写朝着越来越冗长庞大的方向发展,而C语言虽然属于相对‘低级’的编程语言,但它的简洁之美是无可替代的。”一位电脑程序员道出了自己格外青睐C语言的原因。和里奇所创造的C语言一样,Unix系统也同样具有简洁、朴素、小巧的特性。但正如里奇自己所说的那样,“Unix系统是一个简单基本的操作系统,但学会欣赏简洁需要天赋。”而里奇本人,尽管在软件发展史上占有举足轻重的地位,也同样在从事的领域辛勤而低调地耕耘近40年。

在悼念里奇的论坛上,众多粉丝表达了对这位“C语言之父”常年坚持的敬意,一位粉丝留言表示:“感谢丹尼斯·里奇,令我们拥有这一简洁而美丽的语言。”而谷歌工程师派克则在Google+中称:“我获知丹尼斯·里奇在忍受了长期的病痛折磨后在家中去世。此外,我没有获得更多的信息。”

延伸阅读

“C语言之父”也是“黑客之父”


由于C语言和Unix两项成就,里奇成为许多编程爱好者膜拜的对象。里奇在1978年出版的《C程序设计语言》被程序员们称为“白皮书”,获得狂热拥戴。然而由于C语言的简洁和高效,也成为入侵他人电脑的利器之一。里奇因此被诸多电脑黑客尊为导师,虽然里奇本人并不认可这一说法。

在Unix研发成功后不久,安装了这一程序的PDP-11被放在贝尔实验室供大家使用。有一天,大家发现两位创始人总是可以得到最高的权限轻松进入他们的帐户,在贝尔实验室这种高人云集的地方,这简直是太不能容忍的事情了。于是,若干愤懑的同事仔细分析Unix代码,找到后门,修改后再重新编译整个Unix 程序。当所有人都以为这个世界应该从此清静了的时候,却发现他们的帐户权限还是很容易泄露。直到很多年后,肯和里奇才道出其中的原委——原来代码里确实存在后门,不过并不在Unix代码中,而是藏在编译Unix的编译器里。

为玩游戏研成C语言

作为一门伟大的编程语言,C语言是借助Unix操作系统的翅膀而起飞的,Unix操作系统也由于C语言的存在而得以快速落地生根,两者相辅相成,成就了软件史上最精彩的一幕。不可思议的是,当初Unix这个操作系统的诞生,并不是为了推向市场,甚至不是为了让更多人使用,而仅仅是作者为了方便自己使用,而且初衷是为了能更流畅地玩游戏。连Unix这个别扭的名字,也是对早期一个名为Multics操作系统开玩笑的称呼。

1967 年,里奇参与的第一个项目是Multics,这是一个操作系统项目,被设计在大型计算机主机上运行,但是由于整个目标过于庞大,糅合了太多的特性,Multics的性能很低,最终以失败而告终。Multics项目的开发者之一肯·汤普逊则继续为GE-5开发软件,并最终编写了一个新操作系统项目,能够支持同时的多用户操作,也就是后来的Unix。

在不经意间,奇迹诞生了,由于Unix诸多优点,人们将它称为软件中的瑞士军刀。这再一次验证了IT业的创新往往是兴趣,而不是大把大把的金钱使然。最初的Unix是用汇编语言编写的,一些应用是由叫做B语言的解释型语言和汇编语言混合编写的,在移植的过程中遇到不少麻烦。早在对 Multics项目调整过程中,就迫切需要一门高级计算机语言做工具,为了解决程序的可移植性问题,肯·汤普逊和丹尼斯·里奇决定对它进行简单改进,形成 NB语言。但NB在Unix的移植方面依然不尽人意,此后里奇又对NB语言做了改进,C语言诞生。

这被计算机界认为是一个划时代的动作,C语言让Unix能够轻易地被移植到各种不同的机器上,为Unix的迅速普及立下汗马功劳。

以上参考源自:北京日报,作者: 沈衍琪、李涵

2011年10月12日,和里奇共事 20 多年的同事 Rob Pike 从加州到新泽西去拜访他,才发现他已经去世了。由于是独居,当时无法知道准确的死亡时间,后来确定离世日期是 10 月 9 日。据他的兄弟透露,那几年丹尼斯·里奇的健康状况一直不好,他患有前列腺癌和心脏病。


乔布斯和丹尼斯·里奇都是在同年同月离世。之后每年的这段时间,很多媒体都会纪念乔布斯,但很少提到丹尼斯·里奇。和乔布斯在大学辍学不同,他毕业于哈佛大学,有物理学和应用数学的博士学位。他工作于新泽西的 AT&T 贝尔实验室,而不是闪闪发光的硅谷。

是的,就是 “What exit?” 的新泽西。(编注:“What exit?”是新泽西当地俚语,Garden State Parkway 是一条南北走向的高速公路,它穿过整个新泽西州,所以是一个很有用的地标。新泽西当地人问地方都问从这条高速的哪个出口出来就可以到达。)

鉴于乔布斯古怪的个性又极富创造力,人们经常把他和爱迪生作比较。我不赞同这种比较,因为实际上我们错把乔布斯当做一个真正的技术专家和发明东西的人。有一件重要的事情我们必须要意识到:尽管乔布斯有他擅长的事情,而且他为技术和计算机业界做出很大的贡献,但事实上他并不是一个技术专家。他对于时尚和工业设计的确很有感觉,他理解用户想要什么,他还是一个营销大师和推销员。所有这些让他成为业界的巨人。

但是说到发明家?不,他不是。

但是丹尼斯·里奇发明了和共同发明了两个关键的软件技术,它们是构成每一款计算机软件产品的 DNA,现在我们直接或间接都在使用这些软件产品。这听起来让人难以置信,但它确实是真的。

首先,让我们从《 C 程序设计语言》开始

C 语言是里奇在 1969-1973 开发的,它被认为是第一个真正意义上可移植的现代编程语言。自它诞生差不多 45 年以来,它已经被移植到几乎每一个出现过的系统架构和操作系统上。因为它是一种命令的、编译的和程序化的编程语言,它允许语法变量作用域和递归,允许内存的底层访问,还有复杂的 I/O 和字符串操作功能,这种语言变得相当通用。里奇和布莱恩·克尼汉(Brian Kernighan)对它进行了一定程度的优化,最终于 1989 年被美国国家标准协会的 X3J11 委员会进一步细化为 ANSI C 程序设计语言。

1978年,克尼汉和里奇合著出版了《C 程序设计语言》这本书。该书被很多人简称为 “K&R C” ,是计算机科学的杰作,它也是解释现代程序设计概念的一个关键参考,甚至到今天,它还是计算机科学课程里学习程序设计的经典教材。直到今天, ANSI C 作为一种编程语言还被大量地使用,后来它还发展出很多的姊妹语言,这些语言又都有很多的追随者。最流行的 C++ 是由本贾尼·斯特劳斯特卢普(Bjarne Stroustrup) 于 1985 年发明,它增加了面向对象编程和类的支持,用在各式各样的操作系统上,包括像 Linux 和 Mac 这样的 UNIX 衍生品上,它作为微软 Windows 软件开发的主要编程语言长达20多年。

Objective-C,是由达石软件(Stepstone,Lumesse(路敏思)的前身)的布莱德·考克斯(Brad Cox) 和 Todd Love 在八十年代发明的,增加了 Smalltalk 消息传递功能,进一步拓展了这种语言面向对象和代码重用的特性。Objective-C 很大程度上被认为是一个鲜为人知的 C 语言衍生品,直到它在八十年代末和九十年代初被广泛用于 NeXT 计算机系统公司的 NeXTStep 和 OpenStep 操作系统上,NeXT 是乔布斯在 1985 被赶出苹果公司后所创办的。“下一个”发生了什么就是一段计算机领域的传奇。NeXT 于 1996 年被苹果公司收购,乔布斯在 1997 年重新回归苹果并出任公司的CEO。

2001 年苹果发布了 Mac OS X,其中大量使用了 Objective-C ,以及 NeXTStep 和 OpenStep 所引入的面向对象技术。

当 C++ 也被大量应用在 Mac 上,Objective-C 被用来在 XCode IDE 下编写本地面向对象的 “Cocoa” API ,这些 API 是 iOS 上手势识别和动画功能的核心,这些功能为 iPhone 和 iPad 增光不少。Objective-C 还提供了 Foundation Kit 和 Application Kit,用于构建本地的 OS X 和 iOS 应用程序。微软也有自己的 C 语言衍生品—— C# (读作 “C Sharp”),于 2001 年发明并作为 .NET 框架的编程基础。C# 还是编写基于 Windows 运行时(WinRT)的现代应用程序的基础,WinRT 在 Windows 10上发展成统一的Windows 平台(UWP, Universal Windows Platform)。作为开发 Mono(一个.NET 框架的可移植版本)的编程环境,它也被用在 Linux 和其他 Unix 衍生系统上。

但是 C 语言的影响并不仅局限在它的衍生品上。Java 这样一个重要的企业级编程语言,在很大程度上也是基于 C 语言语法(本身也演变为 Dalvik 和 Android 运行时,它们是 Android 最基本的编程环境)。其它语言例如 Ruby、Perl 和 PHP 等,它们是构成动态现代网络的基础,也都使用了丹尼斯·里奇发明的 C 语言语法。所以说如果没有丹尼斯·里奇的工作,我们根本就不可能有现代的软件。

除了 C 语言,他还有 Unix

只谈 C 语言对于现代计算的重要性和它对于每个人的影响,我其实就可以结束这篇文章。但这个人的工作生涯我才讲了一半而已。里奇还是 UNIX 操作系统的共同发明人。当然 UNIX 的原型是用汇编语言编写,到七十年代早期就完全用 C 重写了。早在1969年,在一台 DEC PDP-7 上引导了第一个版本的“Unics”,从那开始 UNIX 已经演变出很多类似的操作系统,并运行在各种各样的系统架构上。每一个主要的计算机供应商都曾经实现过自己的 UNIX,甚至连微软也曾经拥有一个叫做 XENIX 的产品,后来卖给了SCO(已经不复存在了)。


世界计算机科学史上的巨匠:C语言之父丹尼斯·里奇的轶事

C语言是计算机科学领域中最重要的编程语言之一,其创始人是著名的计算机科学家Dennis Ritchie(丹尼斯·里奇);他是一个有着丰富天赋的程序员和计算机科学家,其聪明才智让他成为了计算机科学的巨星。


在早期的计算机时代,Dennis Ritchie(丹尼斯·里奇)参与了Unix操作系统的设计和开发过程,并在此过程中提出了许多重要的技术和概念。其中最重要的就是C语言,C语言是一种高效、可移植并且易于学习的编程语言,被广泛应用于操作系统、编译器和其他系统软件的开发中。

C语言的成功没有让里奇抱着荣誉愉悦,他还是一位喜欢幽默的人。在2003年的ACM威斯康星大学的一次演讲中,Ritchie对有关他自己的事情展开了幽默的讲述,让听众捧腹大笑。据传言他在其创造C语言之前是一位以Fortran编程语言为中心的爱好者。Fortran是第一种广泛使用的高级编程语言,用于数学和科学计算。然而Fortran虽然自由,却有很多限制,因此里奇创建了C语言,以满足更多的需求。与此同时,传闻还称里奇是一位吸烟者,他喜欢在键盘上留下烟灰。这个行为让他的同事们感到很不舒服,并因此给他起了一个外号:“神秘抽烟者”。此外他还有一个有趣的习惯——在美国的感恩节假期,他总是会沉浸在编码工作中,用一个特殊的Waldorf-ASTORIA酒店房间来hack。当然,这可能与家庭出游等事情有关,但是这个八卦还是很有趣的。

尽管里奇在计算机领域的卓越成就给他带来了众多的荣誉和尊重,但他并没有因此骄傲自满。即使在他去世前,在他的电脑上仍然装有一些他自己创造的简单游戏程序,他仍然对计算机科学和编程感兴趣。这位英年早逝的计算机科学家,跟史蒂夫·乔布斯同年同月逝世,相比之下丹尼斯·里奇的离去,除了在计算机领域引发悼念之外,在世界范围内并未引起太多关注,略显落寞。谷歌软件工程师的罗勃·派克,曾经是里奇的同事,愤愤不平地说:“乔布斯的离世,给世间带来巨大舆论哀悼,相较之下,为当代科技带来更大贡献的人的离开显得如此安静,这十分不公平。” 是的,相比对于科技界的贡献来说,丹尼斯·里奇发明的C 语言、联合发明的Unix操作系统,构建了当代计算机世界的钢筋水泥。苹果、微软的许多伟大的产品都构建在C语言之上。在丹尼斯·里奇是计算机发展史最伟大的科学家之一。在每一位计算机从业者心里,他从不曾被遗忘;这样的人物如果在现在依然还活着,那么计算机世界又将变得怎样呢?

总之,Dennis Ritchie是一位非常有才华和幽默的计算机科学家,他的C语言已经改变了计算机世界,并在开发者之间留下了深远的影响。我们应该铭记他的成就和贡献,同时也应该理解他的个性和幽默。