首页 > 编程语言 >C++ 20新版本的重大更新来了

C++ 20新版本的重大更新来了

时间:2023-08-11 16:46:40浏览次数:34  
标签:20 C++ Sutter ISO 版本 Microsoft

  作为Google和Microsoft使用的核心编程语言,C++新版本获得了国际标准化组织的批准。

  国际标准化组织(ISO)C++工作组,即第21工作组(WG21),已同意发布C++20版本的最终版内容。对于这个有着35年历史的C++编程语言,这是自2017年发布C++17版本后的首次重大更新。

  WG21 C++ ISO委员会常任主席Herb Sutter(他同时也是微软的工程师)说:“ C++20版本的DIS(国际标准草案)投票在9月4日星期五结束,该版本获得一致通过。”

  “这意味着C++20版本现在已经获得了最终技术批准,相关的ISO投票也已经完成,我们希望在完成最后一轮ISO编辑工作之后,这个版本标准可以在2020年底正式发布。”

  对比以往版本的标准,这次的2020年的C++版本标准是一次重大突破。Sutter说,“它将是C++自C++11版本发布以来最大的一次版本更新”,这意味着它比过去每三年发布一次的三个更新版都要大。这也是第一个已标准化的版本。

  C++由丹麦计算机科学家Bjarne Stroustrup创建并在35年前的1985年发布。微软在同一年面向终端消费者发布了Windows操作系统。在微软开发Windows操作系统过程中,C++语言是其核心开发语言。如今,由于Mozilla开发的Rust具有的内存安全性,微软现在正在探索用Rust语言来重写从前用C和C ++编写的Windows系统旧代码。

  C++因其是一种运行快速的语言而受到青睐,特别是近年来由于其在硬件交互方面的实用性而日益流行,在计算机游戏开发中C++语言的应用非常广泛。

  市场上最重要的C++编译器(例如Microsoft Visual Studio,GNU编译器系列工具(GCC)和Clang)都支持C++17版本。

  C++20版本中新加的最重要的两个功能是“模块”和“协程”。

  由Google的Richard Smith领导制定的“模块(module)”是在程序的头文件(header file)中定义,旨在支持构建(build)更大的程序的同时帮助隔离宏(macro)的影响。正如Sutter最近指出的那样,C++20标志着“大约35年来C++首次添加了一项新功能,用户可以利用这项功能给一个命名了的封装定义其边界。”

  Sutter写道:“到现在为止,我们已经拥有三种语言功能,通过把实现某项功能的代码给隐藏起来并给其定义名称,程序员可以创建自己的“权力之言”。这三种语言功能是:变量(用于封装当前值),函数(用于封装代码和行为)和类(用于封装变量和函数,可以同时提供很多状态和函数),”

  协程(coroutine)是对函数(function)的一种概括表示。 C++的贡献者在针对协程(coroutine)的提议中解释说:“常规函数(regular function)总是从函数的开始处开始运行,然后在函数的结束处退出运行,而协程(coroutine)也可以在函数运行到某个点时中止执行,以后还可以在这个中断的地方恢复运行这个函数后面还没有运行的代码。”

  在开始阅读英文原文之前,请先复习下列核心词汇​:

developer - n. 开发者

program - v. 编程

update - n. 更新

version - n. 版本

ballot - n. 投票

release - n. 发布

module - n. 模块

coroutine - n. 协程

feature - n. 功能

isolate - v. 隔离

effect - n. 效果

macro - n. 宏

implementation - n. 实现

user - n. 用户

variable - n. 变量

encapsulate - v. 封闭

function - n. 函数

class - n. 类

  在复习了以上词汇后,请将下面的英文原文一口气读完,不要在中途停下来去查那些不认识的单词。有了上面的核心单词打底,你完全可以将整篇文章读完并且理解里面的大致意思。记住,你只要做到大致明白就可以了。

  阅读能力和阅读量成正比,要提高阅读量,必须是大量的泛读,如果要对每个不懂的单词都去查字典,那么就不可能通过大量的泛读来提高你的阅读量。

  这篇英语原文是《涂博士雅思辅导课》直播班上用来训练学员快速阅读的文章之一。能够快速阅读各个领域的原版文章并找出文中的核心内容,是真正学好英语的最最基础的技能之一,另一个最最基础的技能就是听得懂原版的广播。有了这两个最最基础的技能打底,学员就可以利用好网上大量的原版英语文章和听力资源,不出国就可以把自己沉浸在英语的环境当中。在建立起强大的语感之后,口语和写作能力都会自然成长起来。

  Developers: Programming language C++ is about to get this huge update

  A core programming language for Google and Microsoft has been approved to move ahead.

  By Liam Tung

  ZDNet

  The International Organization for Standardization's (ISO) C++ group, Working Group 21 (WG21), has agreed upon the finalized version of 'C++20', the first major update to the 35 year-old programming language since C++17 from 2017.

  "On Friday September 4, C++20's DIS (Draft International Standard) ballot ended, and it passed unanimously," said Herb Sutter, a Microsoft engineer and long-time chair of WG21 C++ ISO committee.

  "This means that C++20 has now received final technical approval and is done with ISO balloting, and we expect it to be formally published toward the end of 2020 after we finish a final round of ISO editorial work."

  The 2020 release of C++ is huge by historical standards. Sutter said it "will be C++'s largest release since C++11", meaning it's bigger than any of the past three releases, which happen every three years. It's also the first version that has been standardized.

  C++ was created by Danish computer scientist Bjarne Stroustrup and released 35 years ago, in 1985. The language was critical for Microsoft to build Windows, which was released to consumers in the same year. These days Microsoft is exploring Mozilla-developed Rust to replace legacy Windows code written in C and C++ because of Rust's memory safety qualities.

  C++, favored for being a fast language, has risen in popularity in recent years and is widely used in computer games development because of its usefulness in instructing hardware.

  Important C++ compilers, such as Microsoft Visual Studio, GNU Compiler Collection (GCC), and Clang, support C++17.

  Two of the most important features coming to C++20 are 'modules' and 'coroutines'.

  Modules, which was led by Google's Richard Smith, stands in for header files and helps isolate the effects of macros while supporting larger builds. As Sutter noted recently, C++20 marks the "first time in about 35 years that C++ has added a new feature where users can define a named encapsulation boundary."

  "Until now, we have had three such language features that let programmers create their own Words of Power by (a) giving a user-defined name to (b) something whose implementation is hidden. They are: the variable (which encapsulates the current value), the function (which encapsulates code and behavior), and the class (which encapsulates both to deliver a bunch of state and functions together)," he wrote.

  Coroutines represents a generalization of a function. "Regular functions always start at the beginning and exit at the end, whereas coroutines can also suspend the execution to be resumed later at the point where they were left off," C++ contributors explain in a proposal for coroutines.

标签:20,C++,Sutter,ISO,版本,Microsoft
From: https://www.cnblogs.com/ybqjymy/p/17623361.html

相关文章

  • 关于dev c++显示中文不显示,乱码和生成的可执行文件中文乱码
    1.不显示中文工具----编译器选项----显示-----去掉底下的复选框(第一个consolas下面)2,运行窗口中文乱码方法:1、工具—编译选项2、在第一个框中填入-fexec-charset=gbk3、勾选“编译器加入以下命令”4、重新编译一次以后运行。  ......
  • JDK和Spring版本兼容性
      SpringVersionJavaVersion5.xJDK8,9,10,11,12,134.3.xJDK6,7,84.2.xJDK6,7,84.1.xJDK6,7,84.0.xJDK6,7,83.2.xJDK6,73.1.xJDK5,6,73.0.xJDK5,6......
  • C++ 各代版本以及主要区别
    和大家平时用的APP等一样,编程语言每隔一段时间也需要重新制定标准。C++作为老牌编程语言,有着丰富的STL库以及比较规范的语法,是一个比较受欢迎且适合初学者接触编程时的第一个语言,本文简单介绍一下C++的主要版本更替,以及C++11标准和之前的有何区别。版本更替1.C++98第一版ISO/IEC......
  • 我的2016:做精彩的自己
    2016年对于我而言是非常重要的一年,这一年经历了从学生到职场的角色转换,也完成了重要梳理一下我的2016吧。顺利毕业前半年最重要的事情就是博士顺利毕业啦!五年的时间收获颇丰。总结一下有这么几点:最重要的是内心变的非常强大,无所畏惧。在各种艰难险阻下也能保持乐观的心态,不以物喜,不......
  • C++11实用特性3 --智能指针
    1智能指针在C++中没有垃圾回收机制,必须自己释放分配的内存,否则就会造成内存泄露。解决这个问题最有效的方法是使用智能指针(smartpointer)。智能指针是存储指向动态分配(堆)对象指针的类,用于生存期的控制,能够确保在离开指针所在作用域时,自动地销毁动态分配的对象,防止内存泄露。智能......
  • C++使用Py*调用Python3模块中类成员函数及数组参数传递
    1.首先来看Python模块的部分结构和代码。ssd_network_classify.py文件中有SSD_Network_Classify类及其识别的成员函数detect_image(),返回值是一个1维的不定长double型数组。classSSD_Network_Classify:#其他函数实现省略。。。defdetect_image(sel......
  • c++ 使用移动语义来提高 vector 性能
    本文学习了微软的官方实例,用于理解std::move语义。#pragmaonce#include<iostream>#include<algorithm>#include<vector>usingnamespacestd;classMemoryBlock{public://Simpleconstructorthatinitializestheresource.explicitMemoryBl......
  • 2023.8.11
    不背图论板子要反省一下自己了。A[ABC206E]DivideBoth求\[\sum_{x=L}^{R}\sum_{y=L}^{R}[(x,y)\not=1,\frac{x}{(x,y)}\not=1,\frac{y}{(x,y)}\not=1]\]\(1\leL\leR\le10^6\).先容斥。假定\(n\lem\).\[\sum_{d=2}^{n}\sum_{x=1}^{\lfloor\frac{n}{d}\rfloor}\......
  • C++调用Python传入参数、图片并接受返回值
    最近在做C++调用Pytorch模型进行识别的任务,C++关于Pytorch的教程很少,基本上都是用Python写的,但因为要识别任务是实时的,Python的执行效率不如C++,所以主题代码还是没用Python。网上利用C++调用Pytorch模型的方法主要是把模型文件转化成C++可以加载和执行的模型文件,利用的是TorchS......
  • [ZJOI2007]报表统计
    P1110[ZJOI2007]报表统计考虑到操作MIN_SORT_GAP比较简单,用一个set维护前驱后继即可,重点关注INSERT,MIN_GAP。发现我们可以先开一个单链表来存储所有数,开数组表示原数列的第\(i\)个元素现在的位置。每次插入只需要在对应位置插入,然后更新数组的值。关于维护最小差值,用......