軟件工程師回顧C++ 2019 年的發展情況
C++軟件工程師 Bartek發表博客文章,回顧了C++ 2019年的發展情況。Bartek主要介紹了2019年C++特性上的演進、在全球的會議重大進展、相關工具的改進,以及C++20新特性的期待,他總結成三大關注點:
- C++20 即將發布
- 工具,現在編寫C++ 代碼更加容易
- C++ 在開發者中的穩定地位
(需要注意的是,文章提出的只是Bartek 的觀點,並不代表整個ISO C++ 委員會的觀點。)
從下表可以看出來,在2019年,C++社區做了許多事情,像我們關注的新特性方面的進展也有不少,比如Clang 8.0.0、9.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
支持:new
/delete
,dynamic_cast
,try
/catch
,虛擬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 提供了許多強大的實用程序,比如:
- Clang Tidy
- Clang-Include-Fixer
- AddressSanitizer
- MemorySanitizer
代碼分析器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 新特性的使用等:
完整回顧內容查看原博客: