相信很多刚刚上大学的计算机、电子通信等相关专业的同学,在学校学习接触的第一门编程语言课程一般都是C语言。
可能有很多非计算机专业学生都是稀里糊涂的学完这个课程,也有很多学生因为挂科而开始“记恨”C语言的发明人,可是你知道你真正要“记恨”的那个人是谁么?还有,你知道C语言至今已经诞生了多少年?是怎么诞生的呢?它又对计算机的发展造成了哪些影响?
缘起于兴趣
1967年,一个平常的日子,位于美国新泽西的贝尔实验室迎来了一位26岁的新员工,他叫丹尼斯·里奇(Dennis Ritchie),一个简单而又低调的年轻人。谁也想不到的是,这个初来乍到的新员工今后会对计算机领域带来了如何不朽的影响。
他的父亲是贝尔实验室的一个电气工程师,受其父亲影响,里奇在中学毕业后进入了哈佛大学学习物理学和应用数学。在偶然机会下他听了一些计算机相关的讲座,从此便迷上了计算机,他还去选修了一学期计算机介绍的正规课程,之后便投入大量精力研究计算机理论和实践。
历史似乎总是按着既定的轨迹前进,里奇进入贝尔实验室后很快便开始参与他感兴趣的也是刚刚兴起的计算机研究。从此贝尔实验室更像是他的家,他在这里一工作便做到了退休,几十年如一日的兢兢业业。
一件值得做的事
参加工作后不久,里奇便开始参与第一个大项目,是由贝尔实验室、麻省理工学院和通用电气公司三方共同联合研发的项目,目的是为了开发出一套安装在大型主机上多人多工的操作系统,即Multics分时操作系统。
可惜好景不长,1969年由于进度过于缓慢,Multics项目最终遭到裁撤,贝尔实验室退出了该计划。第一个大项目就这样无果而终,里奇终归还是有所不甘却又无可奈何。不过,不久他遇到了一个人,一个对他这一生的成果帮助巨大的人,也是他一生的挚友,比他小两岁的肯·汤普森。
肯·汤普森老爷子年轻的时候应该是个游戏宅和技术宅,他先是编写了个模拟太阳系旅行的游戏Space Travel,然后为了能更好得玩上这个游戏,他在BCPL语言基础上开发出一个简单很多的B语言,然后找了台空闲的PDP-7电脑开始用B语言编写一个能跑游戏的系统,这个系统便是Unix系统的前身。
有一天,汤普森找到里奇,想让他加入自己的个人小项目,一块开发Unix系统,本身对计算机技术就痴迷的里奇当然跟汤普森一拍即合,就此展开了轰轰烈烈的Unix系统开发,而其最根本的原因也仅仅是为了想在PDP-7电脑上运行Space Travel游戏。
1970年,他们成功开发出基于B语言的Unix系统,而B语言是一种解释型语言,有着很大的局限性,造成他们开发系统的时候会太过复杂和繁琐。于是,他们决定在B语言的基础上进行改造和开发一种更高级的语言,终于在1972年,里奇成功创造设计出了一种新的高级的语言,同时也是编译型的语言,B语言是BCPL的第一个字母,里奇就用第二个字母,所以C语言就此诞生。与B语言不同的是,C语言可以被编译成机器码,直接运行在CPU上,速度相对于B语言是不可同日而语的。
开发和编程的乐趣,早已让这两个人忘记了那个之前一直心心念念的Space Travel游戏。1973年初,在C语言主体已经基本开发完成之后,他们就开始迫不及待全身心的投入到用C语言重写Unix系统。也是这一年,他们成功用C语言开发出了Unix系统第三版内核,至此之后Unix系统基于C语言的移植和修改都变得相当便利,这为之后的Unix发展和普及打下了坚实的基础。
回顾那段历史,我们看到C语言几乎都是伴随着Unix的发展而发展,而C语言强大的移植性也促进了Unix的推广。因为C语言只要在不同架构处理器的计算机上加上相应的C语言编译器和库,就可以把C源代码进行编译,同时连接成目标二进制文件,这样就可以在不同架构的机器上运行。
在1977年,里奇发表了《可移植的C语言编译程序》,主要介绍了如何基于不同架构系统下编译C语言。第二年,贝尔实验室正式向世界发表了C语言,虽然此时的C语言还没有具体标准,直到布莱恩·柯林汉(Brian Kernighan)与里奇一起编写了一部至今仍被C语言学习者认为是学习C语言的“圣经”的《The C Programming Language》(C程序设计语言),所以在那些还没有C语言标准的年代,此书一直被当作是 C语言的非正式的标准说明。
很久以后,有人问里奇是什么启发了他如此设计C语言,他回答很简单:“这看起来是件值得做的事”。
站在巨人的肩膀上
C语言和Unix的出现,给计算机时代带来一片崭新的天地,影响极其深远,在之后几十年的计算机工业发展占有极其重要的地位。
C语言的出现对现代计算机编程语言如C++、Objective-C、Java、C#等都有极大的影响,可以说C语言是现代程序语言革命的起点,是程序设计语言发展史的一个重要里程碑。同样,Unix系统也对现代操作系统有着极大的影响,不管是AIX、Solaris、Mac OS X和BSD等这些不同的Unix系统,还是现在非常普及的类Unix系统Linux操作系统,甚至是微软的Windows。甚至可以毫不夸张的说,苹果、微软等这些科技巨头公司都是站在里奇的肩膀上成功的。
1983年,里奇和汤普森由于“研究发展了通用的操作系统理论,尤其是实现了UNIX操作系统”共同获得了那一年的图灵奖。并在1999年获得有克林顿总统亲自颁发的美国国家技术奖章,以表彰他们在C语言和Unix系统上的卓越贡献。
2007年,里奇从贝尔实验室退休开始过上隐居生活,2011年美国时间10月12日在新泽西的老家中不幸去世,享年70岁。
最后,引用他的好友布莱恩·柯林汉对他的评价:牛顿说他是站在巨人的肩膀上,如今,我们都站在里奇的肩膀上。
小程序猿谨以此文,献给在天堂的计算机科学巨匠、C语言之父、Unix之父丹尼斯·里奇!
我是前方有只程序猿,一只会写代码的IT猿,用略拙的文笔,饱含敬意地介绍每一位计算机科学巨匠!欢迎关注我!