本月初,C++ 官方宣布开启一年一度的全球 C++ 开发者调查。历经一周时间,全球共有 1200+ 位开发者参与了本次调查。对本次问卷数据进行统计分析后,日前 C++ 正式公布了此次调查的结果报告《2024 年 C++ 开发者年度调查“精简版”》,并已将调查结果提交给 C++ 标准委员会,以帮助指导 C++ 的发展。
在公布本次调查报告时, C++ 官方补充说明了一点:“调查上线后,我们发现 SurveyMonkey(一款线上调查问卷工具)拒绝了来自某些国家/地区的反馈。他们并没有通知我们会发生这种情况,所以我们今年没有收到来自往年都包含在内的某些国家/地区的问卷。我们承诺在明年解决这个问题,因为我们确实希望听到全球所有 C++ 程序员的声音。”
1、你在哪些地方使用 C++?(请选择所有适用选项)
在这个问题中,大多数开发者(91.05%)表示会在工作中使用 C++,侧面反映了 C++ 在商业和职业环境中的广泛应用。另外,C++ 的灵活性和性能可涉及各种领域,包括游戏开发、机器人、算法实现等,因此有相当数量的开发者(67.59%)会在其个人时间中使用 C++,用于业余爱好项目或尝试新事物。
2、 你具体有多少年的 C++ 编程经验?
调查结果显示,有 33.68% 的受访者拥有 10-20 年的 C++ 编程经验,其次是大于 20 年的开发者(26.55%)。这表明在此次调查中,超过六成的开发者具有超过 10 年的 C++ 编程经验,他们可能长期从事与 C++ 相关的工作或项目,有着丰富的经验和技能。
相较之下,具有 1-2 年 C++ 编程经验的占比仅有 5.15%,这部分人群可能是新手程序员或对 C++ 还较为陌生的人群,近来才开始学习和使用这门语言。
3、你总共有多少年的编程经验(所有语言)?
如果不局限于 C++,则近四成开发者(39.04%)拥有超过 20 年的编程经验。这部分开发者可能早期就开始涉足编程并持续积累经验,其中或许也包括了长期的 C++ 编程。
4、你从事哪些类型的项目?(请选择所有适用选项)
作为一种功能强大的编程语言,C++ 被广泛应用于各种领域,包括但不限于系统软件开发、嵌入式系统、游戏开发等。
数据显示,在受访者中有 31.51% 的人从事工程领域,涵盖了例如航空电子设备、电源管理等,往往需要高性能和可靠性。紧随其后的是硬件/物联网项目,占比为 29.92%。这可能涉及到嵌入式系统的开发、传感器技术、物联网设备等,在这类需要高效处理硬件交互的场景,C++ 的优越性能和具有底层控制能力的特点非常适用。另外,开发工具和游戏开发也占据了较大比例,分别为 27.38% 和 20.87%。在这些项目中,C++ 是部分开发者的首选语言。
5、你为哪些平台进行开发?(请选择所有适用选项)
在受访者中,有最高比例的人(60.56%)为 Windows 桌面平台进行开发,这表明 C++ 在 Windows 桌面开发中占有主导地位。其次是 Linux 桌面平台和 Linux 服务器平台,分别为56.75% 和 57.30%,即 C++ 在 Linux 系统上的广泛应用,不仅涵盖了桌面应用,也包括了服务器端的开发,例如系统软件、网络服务等。另外,嵌入式系统也是 C++ 的一大开发领域,占比为 32.22%。
6、在 C++ 开发过程中,你觉得哪些问题最大?
对于 45.43% 的受访者来说,管理应用程序所依赖的库是他们在 C++ 开发中最为头疼的主要问题,其次是构建时间(42.86%),还有 30% 的开发者认为从零开始建立持续集成管道(自动构建、测试......)以及管理 CMake 项目也是不容忽视的问题。
与上面的问题相比,近半数开发者(49.24%)指出,调试代码中的 Bug 虽然也是难题,但算不上是主要痛点。
7、你如何管理你的 C++ 第一和第三方库?(请选择所有适用选项)
开发者在管理 C++ 第一和第三方库时采取了多种方法,最常见的方法是将库源代码包含在项目中,将其与项目一起编译,占比为 68.54%。这种方法的优点很明显:可确保项目的可移植性和稳定性,同时也允许对库进行定制和修改,以满足项目特定的需求。
其次是用库的说明单独编译库,这部分占比 48.48%,可将库的编译过程与项目分离,也能够提高代码的复用性和可维护性。还有 37.80% 的受访者用系统软件包管理器,如 apt、brew 等,简化了依赖关系的管理,更方便进行库的更新和升级。
8、你使用哪些构建工具?(请选择所有适用选项)
调查结果显示,广泛用于管理和构建 C++ 项目的 CMake 是最受欢迎的构建工具,其跨平台特性和丰富的功能使其成为了主流选择——在 1200+ 名受访者中超过 1000 人都选择了 CMake,占比高达 83.24%。其次是 Ninja,占比为 45.41%,通常与 CMake 结合使用,用于加速项目的构建过程,在一些大型项目或需要频繁构建的场景中备受青睐。Make/nmake 也是另一个常见的构建工具,开发者使用占比为 36.31%。
9、在你当前的项目(工作或学习)中,允许使用哪个版本的 C++?
在所有 C++ 版本中,目前 C++ 11 的使用范围最广,有 90.81% 的开发者表示 C++ 11 的功能几乎可全部使用。而最新的 C++ 23 则有 61.17% 的人指出其所在环境不支持使用。
10、在未来 12 个月内,你当前的项目是否计划开始允许使用更多较新的 C++ 标准功能?
针对这个问题,有 53.92% 的开发者计划在未来 12 个月内使用更多较新的 C++ 标准功能,侧面反映了对于采用最新 C++ 标准的需求和趋势,充分利用这些新的功能,以保持其在竞争激烈的市场中的竞争力。
另一方面,也有 21.12% 的受访者表示没有这个计划。这可能是出于项目的稳定性和安全性等方面的考虑,也可能是因为项目中的代码基础较大,引入新的 C++ 标准功能可能会带来一些不必要的风险和复杂性。
11、特别是针对 C++20/23 的主要功能: 在未来 12 个月内,你当前的项目是否计划允许在生产代码中使用这些功能?
对于 C++20/23 的主要功能,开发者在未来 12 个月内计划允许在生产代码中使用的情况有所不同,主要集中在 Concepts、Coroutines 和 Modules 这三个方面。
Concepts 是 C++20 引入的一项重要特性,用于约束模板的类型参数,从而提高代码的清晰度和可读性。这也是本次受访者中最受关注的主要功能,占比为 60.45%。其次是 Coroutines(co_await 等),可用于编写异步代码,提高代码的并发性和响应性,有 34.13% 的开发者计划未来 12 个月内在生产代码中使用该功能。29.25% 受访者选择的 Modules 也是 C++20 中引入的另一个重要特性,用于改进代码的组织和构建效率。
12、除 C++ 外,你在当前和最近的项目中还使用哪些编程语言/环境?(请选择所有适用选项)
除 C++ 外,Python 因其简洁的语法、丰富的标准库和广泛的应用领域而备受欢迎,是受访者中使用最多的其他编程语言,占比为 72.82%。使用第二多的是 C,常用于编写操作系统、嵌入式系统、游戏引擎等方面,第三则是 JavaScript ( 27.43%)。紧接着是 C# 和 Rust,分别占比 23.76% 和 18.37%,前者用于 Windows 平台的应用程序开发,后者因其安全性近年来也备受大厂青睐。
13、你使用哪些开发环境(IDE)或编辑器进行 C++ 开发?
在进行 C++ 开发时,受访者使用的开发环境(IDE)或编辑器主要包括 Visual Studio、Visual Studio Code、CLion、Vim、Emacs 等。
其中 Visual Studio 是受访者中使用最多的开发环境(62.03%),在 Windows 平台上广泛用于 C++ 开发。其次是 Visual Studio Code(简称 VS Code),占比为 50.27%,支持多种编程语言,通过插件可扩展其功能,使其成为了许多开发者的首选工具之一。
由 JetBrains 公司推出专门针对 C++ 开发的集成开发环境 CLion 也受到了 45.32% 开发者的喜爱,另外 Vim 和 Emacs 也分别占比为 36.96% 和 38.79%。
查看完整报告,可详见:
https://isocpp.org/files/papers/CppDevSurvey-2024-summary.pdf