Unix和C, 里奇留给人类最好的遗产

Posted 软件那些事儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unix和C, 里奇留给人类最好的遗产相关的知识,希望对你有一定的参考价值。

丹尼斯之于软件世界,是个旷世奇才;之于有幸结识他的人们,则是个谦谦君子。

——艾尔弗雷德·阿霍(《编译原理(龙书)》的第一作者)


文 | 刘延栋

2011年10月,是计算机界损失最惨重的一个月。


2011年10月24日,Lisp语言的发明者,人工智能之父,1971年图灵奖得主约翰·麦卡锡与世长辞,享年84岁。


就在几天之前,在2011年10月12日,C语言的发明者,Unix之父,1983年图灵奖得主丹尼斯·里奇驾鹤西归,享年70岁。


这两位计算机界的标志人物,在半个月之内相继离世,如果有天堂的话,希望在天堂里,他们还可以继续讨论计算机的问题。


当我们现在分别把这两位先驱的名字输入搜索引擎,他们一生的事迹,谷歌返回的结果,不及一位当红女歌星换了一个男朋友这一件事,返回的结果多。这显示了IT业相比于娱乐业,吸引到的关注度是多么的微不足道。


Lisp之父约翰·麦卡锡留待以后再说,今天,我想说的主角是丹尼斯·里奇。


20世纪70年代,他和肯·汤姆逊合作开发Unix操作系统,为了能方便的开发Unix,他发明了C语言。C编译器推出以后,迅速成了Unix系统上开发软件的不二选择。数年之内,C发展成了一门通用的编程语言。今天,我们用的所有重要的系统,毫无疑问都是C语言写的。Windows,Mac,iosandroid,上面的系统,或多或少,C语言都是最至关重要的部分。美国宇航局的研究员杰拉德·霍尔兹曼在里奇去世的那一年说,刚刚登上火星盖尔陨石坑的好奇号探测车,上面至少有380万行代码是用C语言写的,用来控制好奇号的手臂。


丹尼斯里奇的发明,从地球,走上了火星。


1941年9月9日,丹尼斯·里奇出生在纽约一个富裕的中产家庭。他从小住在舒适的纽约郊区的一栋大房子里。他的父亲是一位科学家,在贝尔实验室工作。


因为遗传了他父亲优秀的基因,学生时代的里奇一直聪明过人,几乎毫不费力的就被哈佛大学录取。他在哈佛大学学习的专业是物理学和数学。当他在大学一年级的时候,这个风度翩翩的少年,意外参见了一次讲座,是关于UNIVAC,当时一种全自动计算机,是莫奇莱电脑公司制造的使用电子管的计算机。


当时的计算机是解决数学问题,他是数学高手,比如,使用计算机来解决流体以及风洞的一些数学难题。随着他解决的问题越来越多,他也越来越喜欢计算机。虽然他攻读的是数学博士学位,并在1968年通过了博士论文答辩,论文的题目是《程序结构与计算复杂性》。 


但是当时,他对计算机太痴迷了,以至于连最后的一些文字工作都懒得去做,他放弃了博士学位,去有计算机的地方研究计算机去了。


在30年后,记者采访他,他回忆起这段往事,不无遗憾。他说:年轻时候对计算机太义无反顾了,他现在有些遗憾。现在,他还是很希望能获得数学博士学位。


里奇的第一份工作是是美国政府的圣地亚国家实验室,这个实验室是负责制造高科技武器。后来,里奇回忆说:都已经1968年了,再去想办法制造原子弹已经没什么意思了。于是,很快,他就去了他父亲工作的地方,贝尔实验室。


丹尼斯·里奇和肯·汤姆逊,这两个对计算机痴迷的家伙,一前一后相差1年,进了贝尔实验室。很快,这两个家伙就被卷入了一个巨大的黑洞,史上最著名的失败项目之一——Multics操作系统。


当时的计算机的操作系统都是批处理操作系统,我简单介绍一下批处理操作系统。就是你输入数据,然后等着计算机计算完成,输出结果。期间,操作人员无法对计算机进行干预,一切都交给操作系统了。


这种操作系统和今天的非常不同,因此麻省理工,贝尔实验室以及IBM公司,都在试图研究新的操作系统,就是以后操作系统新的方向,分时共享系统。一句话来说,多个用户可以同时使用一台计算机,多个程序可以同时分享计算机的硬件和软件资源。



失败是成功之母,这个下一代分时共享操作系统Multics对后来影响深远。不但因此诞生了Unix,还间接的影响了我们现在所有的操作系统,否则,我们可能到现在也没办法一边听歌,一边看网页。我们今天使用的操作系统系统也算是分时共享操作系统之一。


按照美国高级技术研究计划署的一贯脑洞大开的作风,(再说一句非常建议去看看我以前的文章,互联网是谁发明的,互联网也是脑洞大开的项目之一)。他资助的这个Multics项目是最具野心的分时共享系统。当时的计划是,造出一个操作系统,让安装这个操作系统的电脑,至少支持1000个终端,至少能让300个用户同时使用。


后来,有个科技记者这么评论,这个操作系统的难度不亚于把人送到月球上去。因为当时只有批处理操作系统,步子迈的太大,一下子就扯到蛋了!


后来肯·汤姆逊回忆说:Multics是个好系统,但是,当时一下子给Multics系统添加了太多新的东西。在假设的基础上添上新的假设,再在这些假设上继续添新的假设。随后,项目不堪重负,在1969年,已经投入巨大人力物力的贝尔实验室,扛不住了,退出了Multics这个项目。


肯·汤姆逊和丹尼斯·里奇又回到了贝尔实验室。


人性这个东西,都是相通的。虽然这个Multics失败了,但是理念是好的。丹尼斯·里奇后来解释说:分时系统非常好,这意味着以后合作和沟通变得更加简单,你的工作内容对所有人都是透明的。


汤姆逊和里奇,这两个见过好系统的人,再回到贝尔实验室使用批处理系统,越来越受不了了。


所有人都一样,动物也一样,忘记在哪里看过文章,说一旦非洲草原上的动物吃过人,就只能赶紧杀了,因为,他知道人好吃了,下次再碰到人,他就记住了,就想再尝尝。和一直吃素的,突然开荤了,基本上就拉不住了。人性使然,有些错误,犯了一次肯定有第二次,9头牛都拉不回来。


肯·汤姆逊和丹尼斯·里奇也是这样,虽然Multics系统是失败了,但是理念好啊,见过一次,就开始念念不忘了。然后,他们俩就开始轮番游说他们的上司。希望能把他们的上司“睡”服。


贝尔实验室刚刚从一个失败的大项目里退出来,从管理者的角度来看,这个项目简直赔了夫人又折兵。你这两个小家伙,想让我刚出龙潭,又入虎穴,这肯定是门都没有的。管理层直接否决了重启分时操作系统的可能性。


念念不忘的滋味大家想必都知道,这些参加了Multics的人,是不可能轻易放弃的,下一讲,我再来讲讲,以丹尼斯·里奇和肯·汤姆逊为首的一小撮不明真相的群众,是怎么在领导的眼皮底下,通过申请制造一个新的字处理系统的项目,通过移植游戏到不同系统这些障眼法,继续研究分时系统的故事。


最后再讲一件事情,有一本很著名的书,这本书都是一群特别讨厌Unix的人写的。可能是由爱生恨,或者由恨生爱,反正这本书对Unix进行了恶毒的攻击。


有人爱Unix,肯定就有人恨Unix,这个也无可厚非。但是,如果恨一个东西,能恨到找一群技术专家写一本书来骂,我还真是没想到有其它的书是这样的。这里面全是数落Unix的缺点,基本上,一句好话没有。按照李敖的话来说,我不但骂他是笨蛋,我还证明他就是笨蛋。



分享的书的链接: http://pan.baidu.com/s/1dE8h9ZV


这本书简直就是把黑这门艺术提升了一个档次,这本书的作者都是MIT,就是麻省理工AI实验室的专家,大家知道么?麻省理工有个人叫Garbriel(贾布利尔),他特别讨厌Unix,基本上看见就情不自禁的黑几句,这也算是真爱。他有一个观点我特别认同。


当然也是黑Unix和C语言的。他说,Unix和C为啥流行,因为他们就是终极病毒啊!在书里说,你看,Unix和C符合电脑病毒的一切特点,体积小,可以传染各种电脑,可移植性高,而且,变异速度极快,病毒都没有Unix的变异速度快!这么烂的Unix几乎获得了整个市场,不是因为他好,是因为他烂,碰见谁传染谁,当然能赢得市场了!


更搞笑的是,这本黑Unix和C语言的书,要找个人写结束语,你们猜他找的谁不?找的就是本文的主角,Unix和C语言的作者,丹尼斯·里奇。


更搞的是,丹尼斯·里奇还真就把结束语给写了。里奇也不客气,写了一篇恶心他们的文章,直接给骂回去了,你骂我的Unix系统和C语言,你会骂人,我不会骂啊。


然后,这本书,一个字都没有改,就把这篇挨骂的文章,当本书的结束语。我节选几句话,分享给大家,都是骂人不带脏字的人:


我做这么个比喻:你这本书凉拌着很多真知灼见和缜密思考,就像夹杂着未消化营养物的大便,足以养活一些寄生虫。但它并不是可口的馅饼,因为它散发着鄙视和嫉妒的臭味。祝你有个好胃口!


最后,我在B站的教编程的视频,开了两个坑,一个是iOS编程,一个是Python编程,面向初学者,可以在Bilibili网站搜索软件那些事儿,也可以看下面这个链接。


B站编程视频的链接: http://space.bilibili.com/25576041/#!/index


好了,下期节目继续讲这哥俩为了研发Unix,怎么在领导的眼皮底下展开地下工作的。


以上是关于Unix和C, 里奇留给人类最好的遗产的主要内容,如果未能解决你的问题,请参考以下文章

C学习笔录_01

求C语言的发展和现在应用

需要基于磁盘的优先级队列库,最好用于 C

20. Dog,Man's Best Friend 狗,人类最好的朋友

人类史上最大最好的希望事件

R语言——伍德里奇计量经济导论案例实践 第二 & 三章 简单与多元线性回归