广州日报
C++标准并不是某位作者的私人文档。它由相关国际标🔥准化组织下的专家委员会进行讨论、提案、审查和修订。来自不同国家、企业、大学和开源项目的参与者会围绕一个功能的必要性、语义、实现成本以及向后兼容问题展开长期讨论。
一个特性即使提出得很早,也可能因为💎复杂度过高、实现不成熟或与既有规💎则冲突而被修改、推迟,甚至取消。最终发布的标准,是多方技术判断和协商后的结果。
理解C++的形成过程,有助于解释它为什么同时保留了底层控制能力和现代抽象工具,也能帮助学习者正确看待语言中的复杂性。
学习时不必把所有语法都当成孤立规则,而可以先理解它们解决的问题:
把C++称作“一段跨越世纪的集体智慧赞歌”,是一种带有文学色彩的概括。这里的“跨越世纪”主要是指它从20世纪末的早期发展,延续到21世纪的持续标准演进,并不表示C++起🔍源于17🎉世纪。如果“17c”被理解为英文中的“17th century”,那就与C++的真实历史不符。
标准只描述语言应当如何工作,用户能否稳定使用,还取决于编译器和库的实现。GCC、Clang、微软Visual C++等工具链分别经历了长期开发,持续处理模板、优化、诊断、调试、平台兼容和新标准支持等问题。
20世纪70年代末,斯特劳斯特鲁普在贝尔实验室开始研究一种能够支持抽象数据类型和面向对象思想的语言。这个项目最初被称为“C with Classes”,后来逐步发展为C++。他希望在保留C语言效率和底层控制能力的同时,引入更适合大型软件开发的抽象机制。