剖析C++:优势与困境并存的编程语言
1. C++:90年代的“COBOL”
C和C++的名字来源颇具趣味,据Jerry Leichter所说,它们源于成绩。C++的诞生或许与Unix那种不轻易让用户轻松使用的哲学理念有关。面向对象编程的概念可追溯到60年代的Simula,70年代初Smalltalk使其崭露头角。然而,C++虽打着面向对象的旗号,却未能体现其精髓。
与其他面向对象语言能提升程序员生产力、增强代码健壮性并降低维护成本不同,C++反而以复杂著称,毫无简化之意。它并非精心设计,而是在不断的错误累积中演化而来,就像一个充满事后补救的大杂烩。而且,C++没有明确的语法规范(这是其他大多数语言都具备的),导致很难判断一行代码是否合法。
将C++与COBOL相比,其实对COBOL并不公平,在当时的技术条件下,COBOL是一项了不起的工程成就。而C++唯一“了不起”的地方,或许就是居然有人能用它完成工作。幸运的是,许多优秀程序员会尽量用C语言编程来避开C++那些难以理解的特性,他们会编写自己的非面向对象工具以满足需求。不过,这样做会使代码变得独特、不兼容且难以理解和复用。有些程序员会在代码中点缀少量C++代码来蒙混过关,让项目获得通过。
如今,那些急于摆脱COBOL遗留代码混乱局面的公司会遭遇更大的冲击。那些已经转向C++的公司开始意识到,使用C++并没有带来预期的回报,而且一切都为时已晚,未来几十年的软件灾难种子已然种下。
2. 面向对象编程的“汇编语言”
真正的高级语言具备以下特性:
-优雅性:高级语言的符号表示与所表达的概念之间存在简单易懂的关系。