译后记:C是伟大且垃圾的语言

对于每一个C程序员,不论是菜鸟、教师还是资深程序员,Dennis M. Ritchie所写的The Development of the C Language,是必读的文献。通过google其中文版(google C语言的发展史),搜到的最前面的翻译的东西令我不爽,所以自己翻译一下。yqj2065的翻译中,使用了若干你不能够原封不动抄到你的书籍和文章中的字眼,还添加了一些私活;也没有推敲文字是否优雅,大致通顺即可,木有那份素养啊。关键是意思要正确。信雅达——信是第一位的。

C语言的发展史-1C语言的发展史-2C语言的发展史-3

有时间,我还会完善它们,因而转载请谨慎。


ok,谈谈C语言。千言万语一句话:C是伟大且垃圾的语言

看到过一些诗意般的赞美:“在其它语言里,各种的抽象、甜腻的语法呵护着你的代码,让你看不到它的心跳。但C语言里,就像是足球,在场地上奔跑移动。简单的语法,浅显的关键词,这是对通用冯·诺伊曼·约翰机器最精彩的描述。C语言里,程序的灵魂直接向我们开放。我们看到了、感觉到了,所以我说 C语言,美丽的语言。"

类似这样的描述,比比皆是。特别是C的简洁、谭C说”程序设计自由度大“、高效...

1、简洁

只有初生儿才是简洁的。如同软件开发的瀑布模型,C作为广为人知的编程语言,它在C89/90甚至之前才简洁,只有专注于一个小的应用领域才可能保持自己的简洁。每增添一个关键字,如_Bool、inline、_Static_assert、_Atomic,语言的复杂程度会提高。另外,简洁的C又拥有明显冗余的auto、register。明显冗余的原因,是因为编译器和运行环境做了一些”甜腻的“工作。

2、风格的自由度

这是一个缺点,从任何方面看都是缺点。随着C的发展,BCPL时代的遗风、K&R1的古老风格都被新标准兼容。好的编译器会警告旧风格,让追求自由的程序员不时吃瘪。

3、高效

不得不承认,这是C最大的优点!但是高效并非程序员的终极目标

C的前身B,是解释性语言,Dennis M. Ritchie写道:”使用汇编太让人郁闷了,因而即使B有性能问题,B已经有了一个包含有用服务例程的小例程库,并被越来越多的新程序使用。“,什么意思呢?直白地说,Ritchie在高效的汇编和解释性语言B中,喜欢B。程序员的目标是编写解决问题的程序

当然,要取代汇编的系统实现语言地位,足够的高效是一个前提,所以C挺高效。但是,当有人振振有词地说:“C比谁谁谁高效,所以xxx” 的时候,我们为什么不问一问:”那你为什么不直接使用汇编?“。

C语言的出现,就是通过损失性能换取开发上的方便。如果不愿意性能损失,Dennis M. Ritchie会用汇编编程。

4、经久不衰

”C的成功...毫无疑问,Unix本身的成功无疑是最重要的因素;它让这个语言可以被成千上万的人使用。"

C语言占领了操作系统实现语言的市场。只要没有以其他语言实现一个流行的操作系统,C还将流行下去。某个东西占领市场与它的好坏有关吗?如果你认为市场总会选择最佳、最高效率的技术,你错了。占领市场与它的使用人数有关。我们为什么采用QWERTY键盘?这种打字机键盘的设计能够使我们最高效地输入吗?事实上,设计者如此设计的目的是为了放慢打字人的打字速度。当一个设计被成千上万人使用的时候,它基本上就永久地占领市场。

看见过”C流行了40年,这才是我们需要学习的东西“。这样似是而非的话,对它的解读,就得看你如何依据这样半对不对的东西进一步思考。对于C的经久不衰,我觉得应该给C四个金光大字:积重难返

 

5、C之所以伟大,是因为它已经占领了系统实现语言的市场,除非有人使用Go或D实现了一个流行的操作系统;是因为它取代汇编而较其他语言高效;是因为它简单,它专注自己的领域而非好高骛远。

【给一些人一个黑白相片般的结论:C是一门垃圾语言,但是被认为“伟大”,正如QWERTY键盘是个垃圾设计】

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值