2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

C++20 终于来了!

  • 2020-09-11
  • 本文字数:1784 字

    阅读完需:约 6 分钟

C++20终于来了!

近日,国际标准化组织(ISO)C++ 组,21 工作组(WG21)正式通过了最终版本的“C++20”草案。


WG21 C++ISO 委员会常任主席 Herb Sutter 说:“在 9 月 4 日,C++20 的 DIS(国际标准草案)投票结束,并获得一致通过。”


“这意味着,C++20 现在获得了最终技术许可,并且完成了 ISO 投票。我们希望在完成最后一轮 ISO 编辑工作后,C++20 能在 2020 年底正式发布。”


从历史标准来看,2020 年的 C++ 版本非常庞大。Herb Sutter 表示,“它将是 C++ 自 C++11 以来最大的发行版”,这意味着它比过去 9 年来发布的 3 个发行版都要大。同时,这也是第一个已标准化的版本。


C++ 是一门速度很快的编程语言,因而备受青睐。近年来,由于它在操纵硬件方面的实用性而日益流行。



在 TIOBE 公布的 9 月编程语言排行榜中,C++ 成为增长最快的编程语言。


回顾历史,C++ 的巅峰时期是在 2003 年,当年 8 月,它在 TIOBE 的排名峰值为 17.53%,并夺得当年的年度编程语言奖。但 2005 年后,C++ 式微,在 2017 年处于历史低谷 4.55%。但是,与去年相比,C++ 如今是榜单中增长最快的编程语言。



TIOBE CEO Paul Jansen 认为,新的 C++20 标准带来了极大的正面影响,其积极趋势赶超其他编程语言。


在 C++20 中,最重要的两个特性是“模块 (Modules)”和“协程 (Coroutine)”。


据悉,模块(Modules)是由谷歌的 Richard Smith 提出的,它是针对头文件的改进,并在支持更大构建的同时有助于隔离宏的影响。


正如 Sutter 最近指出的那样,C++20 标志着”大约 35 年来,C++ 首次添加了新特性,用户可以在其中定义命名的封装边界“。


“到现在为止,我们有了三种这样的语言特性,让程序员可以(a)将一个用户定义的名称(b)给予某个隐藏自身实现的事物,从而创建自己“语言的力量”。它们是:变量(封装了当前值)、函数(封装代码和行为)和类(封装两者以同时提供一堆状态和函数)。”


协程(Coroutine)则表示一个函数的泛化。C++ 的贡献者在协程的提案中解释说:“常规函数总是在起始处开始,然后在结束处退出,而协程还可以中止执行,之后在中断的位置继续执行。”


在一次邮件采访中,C++ 之父 Bjarne Stroustrup 曾表示,“对许多人来说,协程是个新事物。为了从中受益,必须学习一种全新的风格。不过,我认为这样做是值得的,因为这样可以使并发编程更简单、更快速。”并且,他还提到“协程已经是 Facebook 许多应用程序的基础“。


对于 C++20,Bjarne Stroustrup 心怀期待。在去年 11 月,他因公出差来到中国上海,InfoQ 记者有幸对 Bjarne 博士进行了一次独家专访。在采访中,我们谈到了与 C++20 有关的几个问题。



他说,“我现在很有信心,C++20 会非常出色。我经常提到,C++11 用起来就像是一种全新的语言。C++20 的提升幅度要比 C++11 更大,它会带来全新的感觉。我可以提一下我认为对整个 C++ 社群而言会有极大帮助的特性,我觉得有两个。”


第一个特性是概念(Concepts),它是对范式编程中接口的精确规范,旨在提升范式编程的易行性与灵活性。因此,我们将看到更多的范式编程,代码呈现形式也将会有所变化。大家会获得更好的错误提示信息,并且可以更少地使用模板元编程。当然,编译速度也会更快。


另一个重要新特性是模块(Modules)。如果使用它整理代码,我们可以将代码编译速度大为提高(比如说快 5 倍以上),这一点非常重要。如此一来,大家就能够更迅速地完成编译而不需要在编译的间隙去喝咖啡打发时间了。同时,你也将消除更多的程序缺陷,因为你的代码将显得更加规整。


“我觉得再过几年,Concepts 与 Modules 会重要到让大家都觉得不可或缺。”他说。


除此之外,C++20 的新特性还包括范围、概念与约束(Constraints and concepts)、指定初始化(designated initializers)、计时、并行算法和对并发编程的一些改进等等。


在邮件采访中,他表示,“如果一个特性改变了我们对代码和软件开发的看法,那么我认为它就是一个主要的特性。”


当谈到对 C++20 的期望,Bjarne Stroustrup 称“C++20 将会非常棒!它有我为之奋斗了几十年的特性。我期望很多特性能够快速被采用。从 C++98 迁移到 C++11 很难,但是我们(标准委员会和实施者)在兼容性方面做得更好,所以从 C++11 迁移到 C++14 和 C++17 更容易。我希望向 C++20 的迁移会更容易一些。然而,如果你想从新的主要特性中获益,你确实需要修改代码。”


延伸阅读:


C++之父:爱吃辣子鸡,C++20会非常出色丨极客档案


2020-09-11 19:0019478
用户头像
王强 技术是文明进步的力量

发布了 938 篇内容, 共 557.6 次阅读, 收获喜欢 1811 次。

关注

评论 6 条评论

发布
用户头像
放弃吧,C++,
2021-01-24 22:52
回复
用户头像
看样是应对go的挑战啊,编译速度、協程。
2020-09-24 21:47
回复
用户头像
最后还是学习 Go 实现了协程
2020-09-20 11:38
回复
用户头像
编译器们准备好了吗
2020-09-20 09:13
回复
用户头像
到35岁都学不完了
2020-09-12 14:04
回复
用户头像
学不动了
2020-09-12 10:08
回复
没有更多了
发现更多内容

央视频“数字雪花”互动项目上线,为全民打造冰雪体育盛宴

郝俸🦁好棒

Python原生数据结构增强模块collections

Java全栈架构师

Python 数据库 程序员 数据结构 面试

聚焦高质量发展,AI创业企业如何释放数智新潜力?

脑极体

当云服务变成云云云云服务,谁能带领企业穿越云层?

白洞计划

基于Paddle Serving&百度智能边缘BIE的边缘AI解决方案

百度开发者中心

飞桨

回顾 2021 | 开启全职开源的奇妙冒险

郭旭东

开源 总结

c/c++Linux开发高级架构师进阶指南-剑指腾讯T9

Yt

腾讯 C/C++ 后端开发 Linux服务器开发

AWS S3 最小目录权限(qbit)

qbit

对象存储 AWS S3 权限

Java Jackson 中如何 Pending JSON 对象到数组中

HoneyMoose

【网络安全】文件上传绕过思路

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

揭秘阿里云神龙团队拿下TPCx-BB排名第一的背后技术

阿里云弹性计算

大数据 阿里云 神龙

APICloud 入门教程窗口篇

YonBuilder低代码开发平台

前端 APP开发 APICloud 跨端开发

第五周作业

lv

以一致的体验交付和管理云原生多集群应用

阿里巴巴云原生

阿里云 云原生 KubeVela OCM 交付

阿里云 MSE 云原生网关助力斯凯奇轻松应对双 11 大促

阿里巴巴云原生

阿里云 云原生 MSE 斯凯奇

前后端数据校验和接口测试就没我 JSON Schema 干不了的活!

CRMEB

LabVIEW目标测量方法(基础篇—12)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 目标测量方法 目标尺寸测量

从本科退学,到再拿本科,2021我的5年技术“弯路”回轨了|1.2w字

杨成功

程序员 前端 盘点2021

06 Prometheus之exporter及查询持久性

穿过生命散发芬芳

Prometheus 1月月更

架构训练营 week4 课程总结

红莲疾风

「架构实战营」

博睿APM获《金融电子化》2021年金融业新技术应用创新突出贡献奖

博睿数据

【盘点 2021】义无反顾,投身福报,我的2021年度总结

Zhendong

阿里巴巴 年终总结

一个cpp协程库的前世今生(十二)自旋锁

SkyFire

c++ cocpp

Apache APISIX 社区双周报 | 功能亮点更新进行中

API7.ai 技术团队

开源 云原生 API网关 社区 Apache APISIX

日更2.0|全新挑战,奖品升级,1月月更正式开启!

InfoQ写作社区官方

1月月更 热门活动

2021年12月云主机性能评测报告

博睿数据

如何在零停机的情况下迁移 Kubernetes 集群

阿里巴巴云原生

阿里云 Kubernetes 容器 云原生 数据迁移

盘点|2021最受开发者欢迎和最具行业影响力的文章

阿里巴巴云原生

阿里云 开发者 云原生 年终盘点

云原生实战派:2021 让改变发生,2022 让创新升级

阿里巴巴云原生

阿里云 云原生 年度盘点

基于机器学习和深度学习,华为大佬手写AIoT系统学习小册

Java全栈架构师

Python 数据库 程序员 AI 面试

C++20终于来了!_语言 & 开发_万佳_InfoQ精选文章