C++軟件工程師Bartek發布博客,回顧了C++ 2019年的發展情況。
Bartek主要介紹了2019年C++特性上的演進、在全球的會議重大進展、相關工具的改進,以及C++20新特性的期待,他總結成三大關注點:
C++20即將發布
工具,現在編寫C++代碼更加容易
C++在開發者中的穩定地位
(需要注意的是,文章提出的只是Bartek的觀點,并不代表整個ISO C++委員會的觀點。)
從下表可以看出來,在2019年,C++社區做了許多事情,像我們關注的新特性方面的進展也有不少,比如Clang8.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新特性的使用等: