C++批判:1990年代编程语言趋势分析

需积分: 0 5 下载量 131 浏览量 更新于2024-10-17 收藏 352KB PDF 举报
"C++批判 3rd Edition Ian Joyner" 本书《C++批判》是Ian Joyner关于C++编程语言及其与其他编程语言对比的深度分析。Joyner在UNISYS公司使用C++进行系统软件开发时积累了丰富的经验,这促使他发表了这本书的前两版。随着时间的推移,Joyner在面向对象编程领域深化了他的研究,从而在1996年推出了第三版,扩展了对比的内容,包括了当时流行的Java以及Bertrand Meyer的Eiffel语言。 在书的介绍部分,Joyner强调了编程语言的角色,认为它不仅是编写程序的工具,也是沟通、抽象和精确表达思想的手段。他还讨论了语言的符号表示、工具集成、正确性、类型系统、冗余检查、封装、安全性和礼貌性考虑,以及实施和部署的考量。这些主题对于理解任何编程语言的设计原则和实际应用都至关重要。 Joyner对C++的具体批评集中在几个核心方面: 1. 虚函数:他认为虚函数的实现方式可能导致效率损失和复杂性增加。 2. 全局分析:他指出全局分析在C++中的难度,这可能影响到代码维护和理解。 3. 类型安全链接:C++的类型系统在链接阶段的处理有时不够严格。 4. 函数重载:虽然提供了灵活性,但可能导致混淆和错误。 5. 继承的本质:Joyner质疑C++继承机制的一些方面,尤其是多重继承。 6. 虚类:这引入了额外的复杂性,可能会导致二义性问题。 7. 模板:模板在提供泛型编程的同时,也可能产生编译时膨胀和难以调试的问题。 8. 名称重载:可能导致代码可读性的下降。 9. 内嵌类:在某些情况下,内嵌类可能增加复杂性。 10. 全局环境:全局变量和作用域可能导致意外的副作用。 11. 多态和继承:Joyner对这两者的结合提出了批评,认为它们在某些场景下并不理想。 12. 类型转换:C++的类型转换机制(如C-style cast和dynamic_cast)有时被认为是不安全的。 13. 运算符'. '和'->': 在不同上下文中的行为差异可能造成困扰。 14. 类定义中的匿名参数和无名构造函数:这可能导致代码难以理解和维护。 Joyner的建议表明他对Eiffel语言有较高的评价,认为Eiffel用户应购买书籍,而Java用户可以借阅,但对于C++用户,他以幽默的方式暗示他们可能会对C++的某些设计感到不满。《C++批判》第四版被扩展为《对象揭密:Java,Eiffel与C++》,在Amazon上获得了良好的反响。 通过Joyner的批判,读者能更深入地理解C++的优势和挑战,以及在选择编程语言时需要考虑的各种因素。这本书对程序员和软件开发者来说是一份宝贵的参考资料,可以帮助他们在编程实践中做出更为明智的决策。