近日,国际标准化组织(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 个发行版都要大。同时,这也是第一个已标准化的版本。

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++20终于要来了...相关推荐

  1. C 20 协程初探

    [导读]:C 20 终于引入了协程特性,给库作者提供了一个实现协程的机制,让用户方便使用协程来编写异步逻辑,降低了异步并发编程的难度.结合我最近协程的学习,在这里记录一下相关内容. 以下是正文 使用场 ...

  2. 华为mate20pro能用鸿蒙哪,华为Mate 20 Pro支持无线充电吗?反向无线充电有什么用?...

    传闻了许久的Mate 20终于跟我们见面了,只不过让人没有想到的是,华为居然一口气发布了四款新机,特别是定位Mate 20 X的出现,更是让人大呼给力,毕竟屏幕达到了7.2英寸,同时还首次加入了石墨烯 ...

  3. 鸟哥的Linux私房菜(服务器)- 第四章、连上 Internet

    第四章.连上 Internet 最近更新日期:2011/07/20 终于要来到修改 Linux 网络参数的章节了!在第二章的网络基础中, 我们知道主机要连上 Internet 需要一些正确的网络参数设 ...

  4. 写给自己 NOI2012流水帐

    2012.07.25 09:55 飞机在晚点55分钟后终于从成都出发,突然意识到,NOI就这样突兀而自然地开始了. 12:20 终于到达了上海浦东.海风大得惊人.阳光很好.精神不错.好像饿了. 17: ...

  5. 售前工程师的成长---一个老员工的经验之谈(二)(转载)

    一.             守时是个好习惯,迟到永远是无道理的 守时是个好的个人习惯,有时能体现一个人待人接物的风格.记不得哪个名人说的"不尊重时间,就是在浪费生命".作为售前技 ...

  6. 【转】售前的成长故事(19篇)

    ​在IT圈里混了十多年,差不多八年的厂家技术管理工作,一直与客户进行技术沟通:无论是做网络,还是做安全,感触最多的还是作为售前工程师的时候,因为售前技术工作是介于销售与技术之间的职位,经常接触到各式各 ...

  7. java多线程设计模式详解

    Java多线程设计模式 线程的创建和启动 Java语言已经内置了多线程支持,所有实现Runnable接口的类都可被启动一个新线程,新线程会执行该实例的run()方法,当run()方法执行完毕后,线程就 ...

  8. Effective C++ 中文版(第三版)读书笔记 更新ing~

    Effective C++ 中文版(第三版)持续更新ing 让自己习惯C++ 条款1 视c++为一个联邦 条款2 尽量以const,enum,inline替换#define 条款3 尽可能使用cons ...

  9. 彩云在南,本命年在北(记云南之旅)

    还不写我恐怕云南之旅的记忆会离我越来越远,以至于有时我怀疑是否到过云南,下指之前,苦思良久,甚惑,才于周周同学处得知同行的明珠的可爱的表弟呼为小新,虎跳峡宿的是茶马客栈,下站时HALF WAY,下下站 ...

最新文章

  1. xCode 开发快捷键
  2. 华为某研究生程序员哀叹:年薪五十多万,存款一百万,却不知道未来怎么走!...
  3. 言论丨马库斯回应14大质疑,重申深度学习怀疑论
  4. Android 消息异步处理之AsyncTask
  5. Centos6下安装中文字体
  6. string类有可以调换方向的函数吗_C++中的string类的用法小结
  7. php 数组到字符串的转换,php – 数组到字符串到数组的转换
  8. pandas.DataFrame.iloc的使用
  9. 伯努利数与自然数幂和
  10. [vue] vue为什么要求组件模板只能有一个根元素?
  11. 自动化测试--实现一套完全解耦的测试框架(三)
  12. 地图分幅编号C 语言编程,地图分幅与编号
  13. 操作指南|JumpServer用户权限体系的使用实践
  14. VSCode python 中文乱码
  15. ERROR in ./src/vue/login.vue?vuetype=templateid=28b333d2 2:0 Module parse failed: Unexpected toke
  16. TI | TM4C123Gx单片机之---ADC笔记
  17. PAT日志 1031
  18. 队列基本操作模拟打印机任务管理
  19. web实现小说阅读器的水平滑动翻页
  20. 美联航客机逃生门故障致乘客机舱过夜 承诺将赔偿

热门文章

  1. 男人出轨娶小三的七大尴尬
  2. 【视频课】快速掌握6大模型部署框架(Pytorch+NCNN+MNN+Tengine+TensorRT+微信小程序)!...
  3. 用友u8提示不能使用[应收系统]的受控科目”或“不能使用[应付系统]的受控科目”
  4. Java项目:SSM水果蔬菜商城批发网站
  5. 替换replace,translate
  6. 使用正则表达式去掉回车、换行、空白符号
  7. 数据传输安全面临的主要挑战
  8. 爬虫实战(证券交易)
  9. “圳”智灼见 AI无限│第三届全国人工智能大赛在鹏城实验室圆满落幕
  10. Docker在英雄联盟游戏中的实践探索(五)