2019 年 C++ 的发展

2020年01月01日

C++ 软件工程师 Bartek 发布博客,回顾了 C++ 2019 年的发展情况。

Bartek 主要介绍了 2019 年 C++ 特性上的演进、在全球的会议重大进展、相关工具的改进,以及 C++20 新特性的期待,他总结成三大关注点:

  • C++20 即将发布
  • 工具,现在编写 C++ 代码更加容易
  • C++ 在开发者中的稳定地位

(需要注意的是,文章提出的只是 Bartek 的观点,并不代表整个 ISO C++ 委员会的观点。)

从下表可以看出来,在 2019 年,C++ 社区做了许多事情,像我们关注的新特性方面的进展也有不少,比如 Clang 8.0.09.0.0 发布、VS 2019 发布与 GCC 9.1 发布等。

简单总结起来,从 Clang 5.0、GCC 8.0、Visual Studio 15.7 和 Intel C++ Compiler 19.0.1 开始,所有编译器都支持 C++ 语言特性。虽然 C++ 标准库需要其它支持,特别是并行算法和文件系统之类的要点。std::filesystem需要使用到 GCC 8.1(或更高版本的 GCC 9.1)、Clang 3.9(或更高版本 7.0)和 Visual Studio 2017 15.7。并行算法更新最早在 Visual Studio 2017 15.7 中可用,但随着之后的更新,MSVC 团队添加了更多算法。

关于 C++20 的讨论在今年占据主导地位,目前特性已经冻结,主要特性包括:

  • 模组
  • 协程
  • 标准库 Concepts 的概念
  • 范围
  • constexpr支持:newdeletedynamic_casttrycatch,虚拟
  • constexpr 向量和字符串
  • 计时:日历、时区支持
  • std::format
  • std::span
  • std::jthread

目前流行的编译器已经实现了许多 C++20 特性。Bartek 列了一个 C++20 新特性的小表:

工具方面,首先 Visual Studio 对 C++ 提供了众多新的支持,包括:

  • 使用 Visual Studio IntelliCode 的 AI 辅助代码补全
  • C++ MSBuild 和 CMake 项目中对 Clang 和 MSVC 的 Clang-Tidy 的支持
  • AddressSanitizer 支持 Windows 上使用 MSVC 编译的项目
  • 与 CMake 更好地集成
  • Concepts 在 16.3 中可用
  • 全面的to_chars()支持,满足了 C++ 17 的要求
  • 提供了一个名为 C++ Build Insights 的新工具集合。

Clang/LLVM 提供了许多强大的实用程序,比如:

代码分析器 CppDepend v2019.3 增加了对 MISRA 编码准则的支持,VS 2019 支持、QT 项目、简化的 UI、嵌入式项目支持。

PVS-Studio,这是一个使用 C/C++ 和 C# 编写的程序源代码中的错误检测工具,2019 年的一些显着变化包括 .NET Core 3 和 3.1 项目分析、MISRA 准则支持、40 多项新检查、对 Java、SonarQube 插件的支持。

包管理器 Conan 与 Microsoft/vcpkg 也都有一些新变化。

最后 Bartek 介绍了 2019 年 C++ 在开发者人群中的地位依然稳定:

  • TIOBE 编程语言排行榜中 C++ 排到了第 4 位。
  • 在 StackOverflow 调查中,C++ 位于 C 上方的第 9 位。
  • 在 GitHub 的调查中,C++ 排名第 6。

除了这些榜单,Bartek 自己也做了一个简单的调查问卷,结果显示了关于 C++ 的使用情况,包括使用的标准库版本、工具的选择与对 C++20 新特性的使用等:

完整回顾内容查看原博客:

https://www.bfilipek.com/2019/12/cpp-status-2019.html

展开阅读全文
42 收藏
分享
加载中
精彩评论
C++技术进步了,可越来越不想用。跨平台差,有网络库么,boost库这么复杂庞大,qt又是庞大无比。相同的功能,代码量和Python相比甚至能达到800:1。C++我个人觉得缺的是库,缺的是语法的精简,而不是弄成一个百科词典
2020-01-01 11:36
31
举报
总有人以为自己能学会c++
2020-01-01 11:14
25
举报
很多基础设施,还是离不开c/c++,大型项目非c++莫属,Qt全家桶无处不在。
2020-01-01 09:34
11
举报
Qt哪里庞大无比了?arm9上64m内存128m大flash我也用的Qt5.13,实在想不通庞大指的是什么?
2020-01-01 14:16
10
举报
Qt做的不错,qt不庞大但十分强大,很好用!越嚼越有味!c++也在越来越快的解决标准库的问题!
2020-01-01 12:17
9
举报
最新评论 (104)
为什么总有人觉得自己学会了c++,还口口声声反问c++哪里复杂了?
2020-01-09 17:12
4
回复
举报
C++终将王者归来
2020-01-09 08:39
0
回复
举报
说的好!我用C + Rust 。
2020-01-08 14:35
2
回复
举报
同样复杂的体系,为什么不用rust
2020-01-08 12:16
3
回复
举报
c++是注重效率的语言 它有最佳实践 你看到的复杂的代码一定是为了追求效率 甚至混合一部分汇编 当然装逼耍酷的代码除外
2020-01-07 16:49
1
回复
举报
没事,别用C++,加速秃顶。
2020-01-07 08:32
2
回复
举报
有人非要说c++跨平台不好,那你只用一个系统他跨平台性能不就好了
2020-01-04 15:41
0
回复
举报
😄 666
2020-01-04 23:13
0
回复
举报
底层用C。高层的替代品更多了。在cpu越来越快,存储越来越大的情况下,这帮人还不停的折腾。真不知道有什么好玩的。折腾到202x年会停下来?我用C++还在用98 和11的有些特性。
2020-01-03 10:14
2
回复
举报
毕竟C++可以像C那样接触底层,同时又能像高层语言那样写代码,甚至直接就是高层语言的写法。而语法方面又是C-style的,上手虽然不是简单的事,但也不会很难。
另外纯C本身也在进步(也就是你说的折腾),除了人们常见的C89、C99,后面还有新的C11、C17(C18),只不过关注的人真不多,然而比起C99,我现在还是更喜欢C11,例如终于原生自带多线程功能。
2020-01-04 04:58
1
回复
举报
C++,顾名思义,只做加法 不做减法。
2020-01-03 09:49
2
回复
举报
算了算了,我还是用c语言,c++太复杂了,有对象有模板。为什么简单的东西没人用,非要用复杂的?
2020-01-03 01:05
1
回复
举报
Java C# python rust…… 多数主流语言都有对象有模板。有对象有模板就要跟“复杂”划等号未免过于武断。不就是C语言获得年度语言嘛,又不等于C语言取代一切。
2020-01-09 23:57
0
回复
举报
更多评论
104 评论
42 收藏
分享
返回顶部
顶部