C++批判:1990年代编程语言趋势分析
需积分: 0 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++的优势和挑战,以及在选择编程语言时需要考虑的各种因素。这本书对程序员和软件开发者来说是一份宝贵的参考资料,可以帮助他们在编程实践中做出更为明智的决策。
2007-04-25 上传
2013-04-18 上传
2021-05-23 上传
2021-04-07 上传
2021-02-03 上传
2021-06-22 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
Season_Xia
- 粉丝: 19
- 资源: 3
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍