计算机软件领域大明星丹尼斯里奇和林纳斯谁更伟大?

一口Linux

    前言
    在计算机软件领域,做出过重大贡献的神人很多,在这闪耀的明星中,最为闪耀的莫过于「Linus  Torvalds和Dennis Ritchie」。
    那么这两位谁的贡献更大呢?
    这是一个很难回答的问题,就如同关公战秦琼,仁者见仁,智者见智。
    还是先对两位大神做个介绍吧。
    一、Dennis Ritchie
    C语言之父,UNIX之父。
    1) Dennis Ritchie(1941年- 2011年10月12日)
    
    Dennis Ritchie
    Dennis Ritchie曾担任朗讯科技公司贝尔实验室下属的计算机科学研究中心系统软件研究部的主任一职。1978年与布莱恩·科尔尼干(Brian W. Kernighan)一起出版了名著《C程序设计语言(The C Programming Language)》。此书已翻译成多种语言,被誉为c语言的圣经。
    2011年10月12日,共事20年的同事Rob Pike从加州到新泽西去拜访他,才发现他已经去世了。由于是独居,无法知道准确的死亡时间。享年70岁。
    
    丹尼斯·里奇生平
    丹尼斯·里奇因为一直都是单身(大神的思想境界真的)
    2) C语言
    丹尼斯·里奇创建了C编程语言和Unix 操作系统。无论是这其中哪一个项目,都可以让他在计算机界傲视群雄。而丹尼里奇开发了两大项目,可以说是计算机史上独一无二的。
    事实上,C语言在各种软件程序,嵌入式系统开发,操作系统中,使用是最广泛的。同时,C语言也影响了大多数现代主流的编程语言。
    
    1960s年代后期,贝尔实验室对计算机系统的研究进入繁盛时期。MIT、General Electric、Bell实验室合作的Mutlics项目以失败而告终(1969年左右)。
    就是在这个时期,Ken Tompson开始写Mutlics的替代品,他希望按照自己的设计构造一个令人舒服的计算系统(也就是Unix)。
    后来在写出第一个版本的Unix时,觉得Unix上需要一个新的系统编程语言,他创造了一个B语言。B语言是没有类型的C,准确说B语言是Tompson把BCPL挤进8K内存,被其个人大脑过滤后的产生的语言。
    由于B语言存在的一些问题,导致其只是被用来写一些命令工具使用。恰好在这个时期,Ritchie在B语言的基础上,进行了重新的设计改良,从而诞生了C语言。
    1973年,C语言基本上已经完备,从语言和编译器层面已经足够让Tompson和Ritchie使用C语言重写Unix内核。后来,Unix在一些研究机构、大学、政府机关开始慢慢流行起来,进而带动了C语言的发展。
    1978年,K&R编写的《The C Programming Language》出版,进一步推动了C语言的普及。
    3)  unix
    
    Unix的诞生与C语言被广泛的传播、使用,有着密切的联系。
    上图时间线只显示前几个与C语言在相同时间段内诞生的Unix版本。
    后来学术和政府组织中都在使用Unix,也正是由于Unix的风靡与兴盛,带动了C语言被广泛的传播、使用。
    在1980年代,C语言的使用广泛传播,并且几乎所有机器体系结构和操作系统都可以使用编译器。尤其是,它已成为个人计算机的编程工具,无论是用于这些机器的商业软件制造商,还是对编程感兴趣的最终用户,都非常受欢迎。
    
    Unix分支,实在太震撼了。
    来看看其中最著名的几个分支:BSD、minix、Linux、Mac OS X...
    足可见unix对现在操作系统的影响,其地位就像《易经》,为群经之首。
    4)  第一个C语言编译器是怎样编写的?
    不知道你有没有想过,大家都用C语言或基于C语言的语言来写编译器,那么世界上第一个C语言编译器又是怎么编写的呢?这不是一个“鸡和蛋”的问题……
    回顾一下C语言历史:Tomphson在BCPL的基础上开发了B语言,Ritchie又在B语言的基础上成功开发出了现在的C语言。在C语言被用作系统编程语言之前,Tomphson也用过B语言编写过操作系统。可见在C语言实现以前,B语言已经可以投入使用了。因此第一个C语言编译器的原型完全可能是用B语言或者混合B语言与PDP汇编语言编写的。
    我们现在都知道,B语言的执行效率比较低,但是如果全部用汇编语言来编写,不仅开发周期长、维护难度大,更可怕的是失去了高级程序设计语言必需的移植性。
    所以早期的C语言编译器就采取了一个取巧的办法:先用汇编语言编写一个C语言的一个子集的编译器,再通过这个子集去递推,进而完成完整的C语言编译器。
    所以创建第一个C编译器的难度不亚于创造C语言的难度。
    如果还不理解,举个例子,我们要建一个大厦,图纸什么的都已经设计好了,要开工建设。
    那么用于建造大楼的各种设备和工具:塔吊、脚手架、钳子、螺丝刀、水平仪、卷尺等等,这些所有用到的所有工具,都是无数的公司的公司经过多年不断研发积累才达到今天的标准。
    而编译c语言的编译器,就相当于建设大楼所需要的各种工具,丹尼斯不光亲自设计了C语言,还亲自从头到尾设计这一整套的工具。
    这个工作是创造性的,可参考内容并不是很多,其难度可想而知。
    
    
    1  2  3  下一页>