【C语言:丹尼斯·里奇的不朽遗产 】

    有一次有人问丹尼斯:一个程序员从新手成长为精通C语言的开发者,并能写出不凡的代码,据您的经验需要多长时间?丹尼斯答道:我不知道,因为我不需要学C语言。

      “软件”一词几乎人人都有所耳闻,但几乎没人真正了解软件的含义、功用和数量。我在哥伦比亚大学讲授计算机科学基础课时,我问学生这样一个问题作为开场白:当今世界在役的软件有多少套?工业界、政府机构、学术界和整个社会使用的所有的软件系统在内都算上,但相同的系统只算一次。你们认为制造这些软件系统需要写多少行源代码?

不一会儿,有个勇敢的学生举手说:“100万行”。接着另一个学生说:“不对,我觉得不止这个数;大概有1000万行。”于是我提醒大家,仅仅微软Windows XP操作系统的代码量就超过了4500万行;而据我几年前看过的一篇文章估计,SAP公司开发的商业应用环境代码量超过了2亿5000万行。


我又举了几个大型软件系统的例子,最后总结道:这个问题其实没人能给出一个准确的答案,但我可以估算一下,世界上运行的软件代码总量至少有1万亿行。我的推理如下:假设世界上大约有500万个程序员,整个业界的平均生产力大约是每年2500至5000行已测试并存档的代码。因此,每年有数百亿行新代码诞生。由于程序员们已经前赴后继地写了几十年软件,于是容易算出总代码行数已达数千亿行。又由于旧软件是很难弃用的,所以遗产系统的代码量只会愈加庞大。


整个社会不但不知道软件的含义和数量,甚至不了解有哪些伟大的软件开发者。我做了个试验:Google一下“Dennis MacAlistair Ritchie”(译者注:丹尼斯·里奇的全名),得到97000个条目;相比之下,Google一下“Justin Drew Bieber”(译者注:贾斯汀·比博的全名)得到的条目则超过了2000万个。


关于丹尼斯为社会的贡献之大、影响之巨,我在此管中窥豹,仅重点讲一下他在C语言和Unix操作系统方面的工作。首先让我们简要回顾一下这段历史。20世纪70年代初,丹尼斯发明了C语言,这只是他和肯·汤普森(Ken Thompson)合作开发的Unix操作系统的其中一部分工作。当C编译器推出后,C语言迅速成为Unix系统上开发软件的不二之选。


数年之内,C语言发展成了一门通用的编程语言,甚至用于Unix系统之外。比如,微软的Windows系统就是用C实现的。事实上,今天世界上仍有诸多完成关键任务的软件系统是用C编写的。今天倘若没有丹尼斯的发明,你就打不了电话,坐不了飞机,开不了汽车。C语言是一份不朽遗产。我刚从宇航局现役研究员杰拉德·霍尔兹曼(Gerard Holzmann)那里收到的一个便笺,对这一点给出了最好的例证。他说:刚刚登上火星盖尔陨坑(Gale Crater)的好奇号漫游车(Curiosity Rover),它的空中吊车降落杆非常厉害,其控制程序就是由380万行ISO标准C代码实现的。丹尼斯的发明,花了40年时间,从贝尔实验室的Unix研发室走到了火星的盖尔陨坑。


丹尼斯对软件业的影响力的另一个标志是:C之后新诞生的大量主要编程语言,要么派生于C,要么深受C的影响。


丹尼斯发明C语言之后大约十年,比杨·施特劳斯特鲁普(Bjarne Stroustrup)加盟贝尔实验室。他为C语言添加了类和面向对象特性,发明了C++语言。现在这个世界上有很多使用最广泛的软件系统,要么是C或C++编写的,要么是两种语言混合编写而成的,我这么说应该不会错。


然而,C++并不是唯一受C影响的编程语言。现今其它的主流语言--C#、Java、JavaScript、Objective-C、PHP等--都明显脱胎于C。我在此可以大胆的说,今天世界人民使用的几乎所有重要的软件系统,要么是用C编写的,要么是用受C影响的语言编写的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值