c/c++历史-弥久恒新
创始人
2024-06-03 14:41:47
0

                                                弥久恒新的c/c++语言,半个世纪历程表

目录

一、早期 C++(1970~1992)

二、标准 C++(c++委员会,1990~1998)

三、C++98/03 时期(1998~2010)

四、C++11 时期(2011~2013),此后每3年一个标准版本

五、C++14 时期(2014~2016)

六、C++17 时期(2017~2019)

七、C++20 时期(2020~2022)

八、C++23 时期

九、C++委员会


一、早期 C++(1970~1992)

  • 1970年,AT&T贝尔实验室的工作人员D.Ritchie和K.Thompson共同研发了C语言。

        研制C语言的初衷是用它编写UNIX系统程序,因此,实际上C语言是UNIX的“副产品”。

  • 1979:首次实现“带类的 C(C with Classes)”

        1.新特性:类,成员函数,派生类,分离编译,公开与私有访问控制,友元,函数实参的类型检查,默认实参,内联函数,重载赋值运算符,构造函数,析构函数,f() 与 f(void) 相同,调用的函数与返回的函数(同步特性,不在 C++ 中)
        2.库:并发任务库(不在 C++ 中)

  • 1980 年,贝尔实验室的 Bjarne Stroustmp 开始对C语言进行改进,为其加入面向对象的特性。

        最初,这种新语言被称为“带类的C(C with Classes)”。

  • 1982:出版 C with Classes 参考手册
  • 1983 年,“带类的C”加入虚函数、函数和运算符重载、引用等概念后,正式定名为“C++(C plus plus)”。
  • 1984:实现 C84,出版参考手册
  • 1985:Cfront 1.0

        1.新特性:虚函数,函数与运算符的重载,引用, new 和 delete 运算符, const 关键词,作用域解析运算符
        2.库添加:复数,字符串,输入/输出流

  • 1985:《C++ 程序设计语言》(The C++ Programming Language),第1版

        C++ 最权威的著作、由 Bjarne Stroustmp 撰写的。

  • 1986:"whatis?" 提案将剩余的设计目标写入文档,包含多继承,异常处理和模板。
  • 1987:GCC 1.15.3 中加入 C++ 支持
  • 1989:Cfront 2.0

        C++ 2.0 版发布,加入了多重继承、抽象类、静态成员、常量成员函数等概念。

        1.新特性:多继承,成员指针,受保护访问,类型安全的连接,抽象类,静态和 const 限定的成员函数,类特有的 new 和 delete
        2.库添加:输入/输出操纵符

  • 1990:《带标注的 C++ 参考手册》(The Annotated C++ Reference Manual)

        此书按设计描述语言,包含一些仍未实现的特性。它在 ISO 标准前作为事实标准。

        1.新特性:命名空间,异常处理,嵌套类,模板

二、标准 C++(c++委员会,1990~1998)

  • 1990 ANSI C++ 委员会成立
  • 1991 ISO C++ 委员会成立
  • 1991:Cfront 3.0,《C++ 程序设计语言》(The C++ Programming Language),第2版
  • 1992 STL 以 C++ 实现
  • 1994:ANSI C++ 标准发布。

三、C++98/03 时期(1998~2010)

  • 1998 C++98 (ISO/IEC 14882:1998)

        1998 年,ANSI(美国国家标准协会)和 ISO(国际标准化组织)联合发布了至今使用最为广泛的 C++ 标准,称为 C++ 98。C++ 98 最为重大的改进就是加入了 “标准模板库”(Standard Template Library, STL),使得“泛型程序设计”成为 C++ 除“面向对象”外的另一主要特点。

        1.新特性:RTTI(dynamic_cast、typeid),协变返回类型,转型运算符,mutable,bool,条件中的声明,模板实例化,成员模板,export。
        2.库添加:本地环境,bitset,valarray,auto_ptr,以及模板化的字符串,输入/输出流和复数。
        3.基于 STL:容器,算法,迭代器,函数对象

  • 1998 《C++ 程序设计语言》(The C++ Programming Language),第3版
  • 1999 委员会成员成立 Boost 以为标准产生高质量的候选库。
  • 2003 C++03(ISO/IEC 14882:2003),

        这是一个次要版本,有意稍多于一个技术更正版本,C++03 是给 C++98 打的补丁。
        1.新特性:值初始化

        2.C++03 中修正的缺陷报告(核心 92 个,库 125 个)

  • 2005 年,一份名为 Library Technical Report 1(简称 TR1)的技术报告发布。

        该报告为 C++ 加入了正则表达式、哈希表等重要类模板。虽然 TR1 当时没有正式成为 C++ 标准,但如今的许多 C++ 编译器都已经支持 TR1 中的特性。

  • 2006 性能 TR(ISO/IEC TR 18015:2006)(ISO 商店)(2006 方案)

        此 TR 讨论各种 C++ 抽象的成本,提供实现指引,讨论 C++ 在嵌入式系统中的使用,并引入到 C 的 ISO/IEC TR 18037:2008 接口。

  • 2007 库扩展 TR1(ISO/IEC TR 19768:2007)(ISO 商店)(2005 方案)。

        此 TR 是 C++ 标准库扩展,它添加下列内容到 C++ 标准库:
        1.来自 Boost:引用包装器,智能指针,成员函数,result_of,bind,function,类型特征,随机数,数学特殊函数,tuple,array,无序容器(包含 hash)和正则表达式。
        2.来自 C99:C99 中新的来自 math.h 的数学函数,空白字符类,浮点环境,十六进制浮点的 I/O 操纵符,固定大小整型类型,long long 类型,va_copy,snprintf() 和 vfscanf() 函数族及 printf() 和 scanf() 函数族的 C99 转换指定。

        除了特殊函数之外的所有 TR1 功能都被包含于 C++11 中,有少量更改。

  • 2008,SC22委员会草案(Committee Draft,CD)表决。

        基本上所有C++0x的核心特性都完成了,新的C++0x标准草稿包括了13个源自TR1的库及70个库特性,修正了约300个库缺陷。此外,新标准草案还包括了70多个语言特性及约300个语言缺陷的修正。

  • 2010,SC22最终委员会草案(Final Committee Draft,FCD)表决。

        所有核心特性都已经完成,处理了各国代表的评议。

  • 2010 数学特殊函数(ISO/IEC 29124:2010)(ISO 商店)(2010 方案)

        此国际标准是 C++ 标准库扩展,它添加了曾为 TR1 的一部分,但未包含于 C++11 的特殊函数:椭圆积分,指数积分,拉盖尔多项式,勒让德多项式,埃尔米特多项式,贝塞尔函数,诺依曼函数,beta 函数以及黎曼 zeta 函数。此标准被并入 C++17。

四、C++11 时期(2011~2013),此后每3年一个标准版本

  • 2011 C++11(ISO/IEC 14882:2011)(ISO 商店)(出版后方案)。

        C++11则是一次全面的大进化,引入大量更改,以标准化既存实践,并改进 C++ 程序员可用的抽象
        1.新语言特性:auto 和 decltype,预置和弃置的函数,final 和 override,尾随返回类型,右值引用,移动构造函数/移动赋值,有作用域 enum,constexpr 和字面类型,列表初始化,委托和继承的构造函数,花括号或等号初始化器,nullptr、long long、char16_t 与 char32_t,类型别名,变参模板,广义化联合体,广义化 POD,Unicode 字符串字面量,用户定义字面量,属性、lambda 表达式、noexcept、alignof 与 alignas,多线程内存模型,线程局域存储,GC 接口,范围 for(基于 Boost 库),静态断言(基于 Boost 库)
        2.新库特性:原子操作库,emplace() 和遍及既存标准库所有部分的其他右值引用使用,std::initializer_list,有状态和有作用域分配器,forward_list,chrono 库,ratio 库,新算法,Unicode 转换平面
        3.来自 TR1:所有 TR1,除了特殊函数。TR1 中的许多特性正式成为 C++11 标准的一部分。
        4.来自 Boost:线程库,exception_ptr,error_code 和 error_condition,迭代器改进( std::begin、std::end、std::next、std::prev)
        5.来自 C:C 风格 Unicode 转换函数。

        6.C++11 中修正的缺陷报告(核心 741 个,库 868 个)

  • 2011 十进制浮点 TR(ISO/IEC TR 24733:2011)(ISO 商店)(2009 方案)

        此 TR 实现来自 IEEE 754-2008 浮点算术标准的十进制浮点类型:std::decimal::decimal32、std::decimal::decimal64 及 std::decimal::decimal128。

  • 2012 标准 C++ 基金会成立
  • 2013 《C++ 程序设计语言》(The C++ Programming Language),第4版

五、C++14 时期(2014~2016)

  • 2014 C++14(ISO 商店)(ANSI 商店)( 2014 最终方案)

        C++ 标准的次要版本,作为C++11的一个小扩展,主要提供漏洞修复和小的改进。
        1.新语言特性:变量模板,多态 lambda,lambda 俘获表达式,new/delete 消除,放松 constexpr 函数上的限制,二进制字面量,数位分隔符,函数的返回类型推导,带花括号或等号初始化器的类的聚合初始化。
        2.新库特性:std::make_unique、std::shared_timed_mutex 及 std::shared_lock、std::integer_sequence、std::exchange、std::quoted 以及许多既存库设施的小改进,例如某些算法的双范围重载,类型特征的类型别名,用户定义的 string,duration 和复数字面量等。

        3.C++14 中修正的缺陷报告(核心 276 个,库 158 个)

  • 2015 文件系统库 TS(ISO/IEC TS 18822:2015)(ISO 商店)(2014 方案)

        此 TS 是实验性 C++ 库扩展,它指定基于 boost.filesystem V3 的文件系统库(有一些修改和扩充)。此 TS 被并入 C++17。

  • 2015 并行扩展 TS(ISO/IEC TS 19570:2015)(ISO 商店)(2015 方案)

        此 TS 为所有标准库算法标准化了并行和向量并行 API,还添加了新算法,例如 reduce、transform_reduce 和 exclusive_scan。此 TS 被并入 C++17。

  • 2015 事务性内存扩展 TS(ISO/IEC TS 19841:2015)(ISO 商店)(2015 方案)

        此 TS 扩展了 C++ 核心语言,添加同步和原子块以及事务安全函数,以实现事务性内存语义。

  • 2015 库基础扩展 TS(ISO/IEC TS 19568:2015)(ISO 商店)(2015 方案)

        此 TS 添加数个新组件到 C++ 标准库:optional、any、string_view、sample、search、apply、多态分配器和类型特征的变量模板。此 TS 被并入 C++17。

  • 2015 概念扩展 TS(ISO/IEC TS 19217:2015)(ISO 商店)(2015 方案)

        此 TS 扩展了 C++ 核心语言,添加概念(具名类型要求)和制约(模板、函数和变量声明中对允许的类型施加的限制),这有助于元编程并简化模板实例化诊断,见概念。此 TS 已并入 C++20,并有所省略。

  • 2016 并发扩展(ISO/IEC TS 19571:2016)(ISO 商店)(2015 方案)

        此 TS 扩展 C++ 库以包含针对 std::future,闩与屏障,以及原子智能指针的数个扩展。

六、C++17 时期(2017~2019)

  • 2017 C++17(ISO 商店)(ANSI 商店)(n4659(2017-03-21 最终草案))

        1.语言更改:折叠表达式、类模板实参推导、auto 非类型模板形参,编译时 if constexpr、inline 变量、结构化绑定、if 和 switch 的初始化器、u8-char、简化嵌套命名空间、using 声明能声明多个名字,令 noexcept 为类型系统的部分,新的求值顺序规则,带显式对齐的分配函数,受保证的复制消除,__has_include,*this 的 lambda 捕获,constexpr lambda,属性命名空间不必重复,新属性 [[fallthrough]]、[[nodiscard]] 及 [[maybe_unused]]。移除三标符, register 关键词、bool 自增。
        2.库更改: std::variant、std::launder、未初始化内存工具(std::destroy_at/std::destroy/std::destroy_n、std::uninitialized_move、std::uninitialized_value_construct 等),map/set 抽取 及 map/set 合并,byte、std::make_from_tuple、std::to_chars/from_chars,文件系统中的相对路径支持( proximate、relative、weakly_canonical),文件系统中的目录项缓存、连续迭代器,非成员 size/empty/data、map/unordered_map try_emplace 及insert_or_assign、uncaught_exceptions、变参 lock_guard、as_const、conjunction/disjunction/negation、类型特征变量 xxx_v、透明的 owner_less、duration 和 time_point 的舍入函数、std::shared_ptr 的数组支持,not_fn、weak_from_this、is_always_lock_free、is_swappable、clamp、3D hypot、缓存线接口、is_invocable、is_aggregate、has_unique_object_representations。

        3.库更改:弃用 std::iterator、std::raw_storage_iterator、std::get_temporary_buffer、std::is_literal_type、std::result_of、整个 。移除 auto_ptr,已弃用的函数对象,std::random_shuffle,std::unexpected,过时的 iostream 别名。
        4.来自 TS:文件系统库,库基础 v1(包含 optional、any、string_view、多态分配器、搜索器、apply),并行 v1(包含执行策略、reduce、inclusive_scan、exclusive_scan),但移除 exception_list。来自数学特殊 TR:特殊数学函数,来自库基础 v2:std::gcd、std::lcm
        5.来自 C11:std::aligned_alloc,std::timespec_get

        6.C++17 中修正的缺陷报告(核心 290 个,库 363 个)

  • 2017 范围扩展 TS(ISO/IEC TS 21425:2017)(ISO 商店)(2017 方案)

        此 TS 扩展 C++ 库,以包含范围——一个新的、更有力的取代迭代器对的抽象,以及范围视图,哨位范围,用于就地变换的投影,新的迭代器及算法。此扩展最终使得能以 sort(v); 排序 vector。

  • 2017 协程扩展 TS(ISO/IEC TS 22277:2017)(ISO 商店)(2017 方案)

        此 TS 扩展 C++ 核心语言及标准库,以包含无栈协程(可恢复函数)。它添加了关键词 co_await、co_yield 及 co_return。

  • 2018 网络扩展 TS(ISO/IEC TS 19216:2018)(ISO 商店)(2017 方案)

        此 TS 扩展 C++ 库,以包含基于 boost.asio 的 TCP/IP 网络。

  • 2018 模块扩展 TS(ISO/IEC TS 21544:2018)(ISO 商店)(2018 方案)

        此 TS 扩展 C++ 核心语言以包含模块。它添加了关键字 module、import,并重新引入带新含义的关键字 export。

  • 2018 并行扩展版本 2 TS(ISO/IEC TS 19570:2018)(ISO 商店)(方案)

        此 TS 扩展 C++ 库,使之包含二个新执行策略(unseq 与 vec),添加 reduction_plus 或 for_loop_strided 之类的并行算法,分支合并式并行任务的任务块,SIMD 类型及这些类型上的操作。

七、C++20 时期(2020~2022)

  • 2020 C++20 ( ISO 商店)( n4860 2020-03-31 最终草案)

        C++20 的 四大新特性:概念、范围、协程和模块,以及核心语言(包括一些新的运算符和指示符)。

        主条目: C++20,C++17 后的 C++ 标准主要版本。

八、C++23 时期

  • 2021  C++23草案 ( 2021-10-23 草案)

        实验性技术规范,2023 C++23 ( 2021-10-23 草案)

        主条目: C++23,C++ 标准的下个主要版本。

九、C++委员会

标准c++基金会:Standard C++

c++标准委员会:ISO/IEC JTC1/SC22/WG21 - The C++ Standards Committee - ISOCPP

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...