现代 C++20 实战高手课
卢誉声
Autodesk 首席工程师
3781 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 29 讲
现代 C++20 实战高手课
15
15
1.0x
00:00/00:00
登录|注册

23|未来展望:透过未来标准演进看C++设计哲学

你好,我是卢誉声。
你应该已经发现,自现代 C++ 标准演进开始,其设计哲学是一以贯之的。新特性都是围绕着“将计算提前到编译时而非运行时”设计,进而大幅提升 C++ 程序的性能。
这种高级抽象能力在编程语言领域都是罕见的,而且 C++ 表现得尤其优秀。这也是 C++ 能在编程语言排行榜以及工业界持续发展、长盛不衰的重要原因之一。
在第 20 讲至 22 讲,我们已经一窥 C++ 的未来演进标准和设计哲学。那么,这样一套严谨的标准演进路线和设计哲学,是如何诞生和发展的呢?这一讲,就让我们深入探究 C++ 的语言设计哲学、核心范式,洞悉 C++ 语言的未来。

C++ 的标准化进程

想要洞悉未来,就得先了解历史,我们先来看看 C++ 的标准化进程。
C++ 的设计与标准化过程通常可以划分为两个阶段。第一阶段从 1979 年开始,C++ 之父 Bjarne Stroustrup 开始设计 C++,并将其用于自己的 Unix 内核开发工作中,这个时候名字还叫 C with Classes。BS 在设计语言的同时,开发了一个名为 Cfront 的工具,将其设计的语言“翻译”为标准的 C 代码,这个 Cfront 也就是一个 C 语言的预处理器。
接着,C++ 开始逐渐为人所知,并慢慢应用到工业界中,自然就出现了大量其他的实现。这时 C++ 没有统一标准,因此各个编译器都会有自己的不同实现。由于 C++ 超乎想象的广泛应用,ANSI(美国国家标准学会)在 1989 年成立了 C++ 标准委员会,致力于建立 C++ 标准,在 1998 年推出了 C++98 标准,并在 2003 年推出了针对 C++98 标准的修正案。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

C++设计哲学的演进围绕着将计算提前到编译时而非运行时,以大幅提升程序性能。文章回顾了C++的标准化进程,强调了C++的未来演进理念,强调了核心范式和效率。C++的核心范式依然是支持面向对象编程、支持泛型编程、可扩展的静态类型安全,但在不断完善标准库支持的基础上,逐渐向外扩展延伸,适用于更多的问题场景。C++始终坚持效率原则,语言特性必须能够直接映射到硬件,实现零负担的抽象。文章还讨论了C++的编译时计算、洋葱原则、对旧特性的兼容以及标准库的扩充。总体而言,C++的演进将继续坚守效率原则,以保持其核心竞争力。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《现代 C++20 实战高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • peter
    请教老师几个问题: Q1:Java是动态语言,运行时会做很多事情,这是导致Java比C++性能差的一个主要原因吧。 Q2:嵌入式开发一般不用C++,有界面的应用一般用VC等。那纯C++开发会用在什么场景呢。 Q3:一些人强烈反对使用模板和C++标准库,说是性能差。C++也就是自身的语言特性和库,这些不用的话,那还用什么啊?

    作者回复: 1. Java的核心问题在于无法直接在CPU上执行,需要以虚拟机作为媒介,运行时的动态特性当然也会影响性能,这些都是性能不如C++的原因。 只不过由于现在JIT和垃圾回收技术相当成熟,很多场景下Java并不一定比C++性能差,只不过如果考虑通用场景,C++平均性能肯定是比较好的。 2. C++主要用于大规模的工业和行业软件开发(比如AutoCAD等),这些软件往往同时需要考量性能、响应速度和语言抽象能力,这个时候C++是比较合理的选择。 3. 模板和C++标准库本身性能在通用场景下并不差。首先现代体系结构里,模板一般不会因为页问题引发性能问题,还往往是一种能够提升性能的技术。其次你要相信标准库提供的算法性能在很多场景下是通用场景的最佳实现,肯定比大多数人手糊的算法代码性能要好。之所有人说标准库性能差,大部分是因为他们的场景比较特殊需要进行特殊优化(这个时候任何通用算法库都不可能适用。。。),最典型的就是高性能计算、科学计算和游戏开发等场景,这些场景下都有合适的成熟的第三方库,自然不适合使用标准库。还有就是他们自己的场景可以忽略掉通用场景的很多问题,自然可以写出在“特定情况”下性能更好的实现,这种情况也不需要标准库。但无论如何在大多数通用场景下,标准库绝对是更高效和更安全的第一选择。

    2023-03-16归属地:北京
    4
收起评论
显示
设置
留言
1
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部