逛图书馆的时候,偶然看到《程序员的呐喊》这本书,欣喜不已,于是就拿来翻了翻。因为以前就听说过这本书,只是不知道里面讲的是什么。今天有机会看到,当然不能放过啦!
刚刚读完一篇我就被吓到了,书里面竟然这样评价C++:
C++非常冷漠,可以说地球上最糟糕的语言
看到这句话,我有点受不了了,但是我还是坚持看完了这篇文章《巴别塔》,因为我想知道究竟是什么原因让作者(Steve Yegge )这么吐槽C++。
刚看到这篇文章的题目《巴别塔》,我就满脸的疑惑,“‘巴别塔’是什么鬼,跟这篇文章有什么联系?”查过资料才知道,原来巴别塔只是作者的一个比喻,比喻编程世界里不同的语言。这个不是重点,先不深究了。下面我来总结一下作者为什么说C++是“地球上最糟糕的语言”:
- 冷漠,C++完全缺乏自省能力
首先我们要知道“自省”是什么意思,确切的说应该是“编程语言的自省”。这个概念是针对面向对象的编程语言来说的,具体是指程序在运行时能知道对象的类型。作者说的这一点,我刚开始有些认同,但是就目前来说我觉得这个观点可能就有点太过于偏激,C++并不是完全缺乏自行能力,只不过是相对较弱而已,因为我们可以通过typeid
来获取对象的类型(这是我目前所知道的)。
- 愚钝,愚钝的语言写不出聪明的系统
作者这里的意思是C++完成一个软件需要巨大的代码量,他总是喜欢拿亚马逊来说事儿:
像山一样高的排泄物,规模超过你见过的任何山脉。每当你要修复什么东西的时候,非得爬到最中间才行。
这一点作者说的一点也没错,用过MFC的人应该都深有体会。但是我觉得不能用愚蠢来形容这个语言,这个评价实在是太严重了。我这里并不是想否定作者的话,我也没有资格(因为作者在文中说到“我建议你去了解一下优秀的编程语言是什么样子的,如Lisp,然后你才有资格否定我的话”),我只是想说:事物不是一成不变的,任何编程语言都会成长,更何况C++较以前已经改进了很多;而且我不认为世界上会有一门“天生”就优秀的编程语言,Lisp语言本身就比C++出生的早!
参考资料
- "编程语言的自省". 学步园. http://www.xuebuyuan.com/. 2013-01-09
- typeid Operator. MSDN. http://msdn.microsoft.com/EN-US/library/fyf39xec(v=VS.140,d=hv.2).aspx>.