C++演变历史

本文概述了C++从C++98到C++23的主要版本更新,包括新增特性如STL、异常处理、Lambda表达式等,以及每个版本对标准的改进和向后兼容性的特点。尽管面临竞争,C++在大模型数据处理中的地位稳固。
摘要由CSDN通过智能技术生成

C++演变进程

C++ 从 C++ 98 版本到今年确定的 C++23,共经历了 6 个版本的迭代。上面这张图里,列出了每次版本更新变化的内容。顶部黑体字的大小说明了版本变化的大小,其中 C++14 是字体最小,这个版本是 C++11 的增量版本,之所以没有大的变动,是因为当时未能对一些特性是否要纳入标准达成一致。

在 C++98 和 C++11 中间还有个 C++03 版本,这个版本不是 C++03 的一个重要版本,因为它主要是对 C++98 标准的修订和修正,并没有引入重大的新特性或显著的语言改进。C++03 主要致力于解决 C++98 中的一些缺陷和不明确之处,使标准更加稳定和一致。

下面简要说一下 C++ 版本的主要变化历史:

  1. C++98:这是第一个 ANSI/ISO 标准化的 C++ 版本,发布于 1998 年。它基于 Bjarne Stroustrup 于 1985 年创建的原始 C++ 设计,并加入了一些重要特性,如 STL(标准模板库)、异常处理、I/O Streams、命名空间和 RTTI(运行时类型识别)。

  2. C++03:这个版本主要是对 C++98 的一些修正和改进,发布于 2003 年,并未引入新的语言特性,所以一般不把它当做重要版本,存在感也不强。

  3. C++11:这是 C++ 历史上最重大的更新之一,有时被称为 C++0x(因为它原计划在 200x 年发布,一直跳票)。它引入了大量新特性,如自动类型推断(auto 关键字)、基于范围的 for 循环、Lambda 表达式、智能指针、并发支持、移动语义、nullptr 和更强大的模板功能等。

  4. C++14:作为 C++11 的小幅度更新,C++14 引入了一些改进和新特性,包括泛型 Lambda 表达式、返回类型推导、二进制字面量、数字分隔符、弃用属性等。

  5. C++17:这个版本进一步提升了 C++ 的功能和易用性,新功能不是很多,引入了结构化绑定、if constexpr、std::optional、std::variant、std::string_view、并行算法等特性。

  6. C++20 是继 C++11 之后又一个重大更新,引入了概念(concepts)、范围库(ranges)、协程(coroutines)、模块(modules)、三元运算符的改进、constexpr 的增强、std::span 等新特性。

  7. C++23 是 2023 年 7 月份刚确定下的新标准,目前能完整支持 C++23 的编译器基本没有。变化包括引入标准库的模块化支持、扩展 constexpr 、增加并行算法、ranges 扩展、this 推导、引入更多的属性和注解、增加 std::mdspan、std::generator 等新特性。

C++23 没有将网络库纳入标准,又让 C++ 爱好者捶胸顿足,这等到花儿都谢了。C++ 是为数不多的没有标准网络库的主流语言,想想真是头大。

目前,有用到 C++20 标准的公司,如果碰到这样的公司,是 C++ 程序员的幸福。C++ 每个版本的更新,都会提供部分便利的基础设施,简化代码设计。

也是因为 C++ 一直坚持的向后兼容性,让 C++ 变得越来越臃肿。但我们可以不用学会所有特性,C++ 本来就是设计成支持多种编程范式的语言,选择满足需要的特性就好。C++ 的设计也影响了很多新出现的编程语言。

C++ 出现以后,不时会有新的编程语言要取代 C++ 的地位,到目前为止,还没有这样的语言出现。C++ 依旧生机勃勃,在大模型数据处理领域也越发重要。

《Thriving in a Crowded and Changing World: C++ 2006–2020》 C++ 之父的这篇论文,详细描写了 2006 - 2020 这些年 C++ 的变化过程,值得一看。

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值