DevEco News

2023 年的 C++ 生态系统:C++20 增长、基于 Clang 的工具的更广泛采用、AI 赢得开发者信心

Read this post in other languages:

JetBrains 每年都会开展开发者生态系统调查来了解开发者社区概况。去年的调查已经结束,我们将在这里公布和分析结果! 2023 年最显著的趋势之一是 AI 在软件开发者中的更广泛使用,高达 77% 的开发者使用 ChatGPT 执行各种工作相关任务! 在编程语言方面,Objective-C 已是行将就木,Rust 今年则创下了新的受欢迎程度记录,C++ 和 C 在热门语言排行榜上分别位列第八和第十。 我们的报告中还有更多深入剖析,请继续阅读!

C++ 开发生态

2023 年,我们收集了来自全球软件开发者的 34,493 份回复。 其中,2,627 位受访者表示 C++ 是其前三种主要语言之一。 我们仔细研究了原始数据,提取出有价值的见解并与您分享。 我们还邀请了几位社区成员发表评论,包括代表语言委员会和推动 C++ 发展的公司的知名专家。 我们感谢所有人对数据和发现的反馈:

查看 C++ 报告

C++ 标准:C++20 作为基本方言

C++11 和 C++14 的下行趋势仍在继续,而随着人们迁移到 C++20 和 C++23,C++17 的增长也微乎其微。 明年,我们应该可以看到 C++20 和 C++23 的总占比超过 C++17。 这背后的部分驱动力是 C++ 会议一直倾向于讨论 C++20 和 C++23。
C++ 标准趋势

游戏开发行业似乎在采用较新的 C++ 标准方面领先一步。 在语言添加反射后,这种趋势可能会被放大。反射是游戏开发者最期待的语言功能之一,它对于对象序列化算法非常重要。 对了,您知不知道 Unreal Engine 是通过来模拟反射?

我们还回顾并比较了最近的语言标准在发布第一年和一年后的采用比例:

  • C++17 在 2017 年占 12%,2018 年达到 18%。
  • C++20 在 2020 年占 12%,2021 年达到 18%。
  • C++23 在 2023 年占比为 10%,接下来就看它今年将达到多少了。

不打算迁移到新标准的人占 50% 左右,最高的数字 (57%) 来自仍在使用 C++98/C++03 的人。 这种现象并不新鲜,主要在于对旧编译器版本的需求,特别是在一些嵌入式项目中。

C++ 之外

去年,我透露 Python 是继 C++ 本身之后 C++ 开发者的头号伴侣,让 Jason Turner 吃了一惊。 2023 年,Python 仍然明显领先于 C:

语言和 C++

在我的 C++ 开发经历中,Python 也被广泛用于包装项目模型,而且我知道许多游戏开发工作室仍然使用 Python 处理 .sln 文件。

对于 Rust,我们正在与 JetBrains RustRover 团队一起研究一个有趣的问题。 我们很想知道目前有多少 Rust 项目正在使用 C++,又有多少 C++ 项目正在使用 Rust。 大多数调查和 GitHub 扫描表明占比不超过 5%–10%,尽管像 Google 这样的大公司出于安全原因正在将其部分庞大代码库迁移到 Rust。 您对此有什么看法?

C++ 工具:主要参与者保持不变

首选 C++ IDE 和编辑器

大多数 C++ 开发者似乎都长期使用相同的几款 IDE 和编辑器:

C++ 编辑器

在全功能 IDE 方面,CLion 和 Visual Studio 在市场上占据着相当的地位,智能编辑器 Visual Studio Code 与这两款产品不相上下。 我们很高兴能够参与这场竞赛,不断发展并为用户提供最佳体验。 (另外,您知道 Android Studio 使用 CLion 的 C++ 支持吗? 它在我们的源代码之上构建了一个专有组件。)

管理第三方库

第三方库管理仍是 C++ 中最大的挑战之一,即使这一挑战已经存在了 35 年。 在 C++ Foundation Annual C++ Developer Survey “Lite” 中,这个问题名列第一,被 47% 的受访者称为“主要痛点”。 这是因为 C++ 库难以定义,并且预构建的使用形式也很棘手。 但还有希望! 在 CppCon 2023 上,CMake 的 Bill Hoffman 和 Bloomberg 的 Bret Brown 讨论了 C++ 中依赖项管理的初始标准 – 描述预构建库的元数据文件。 他们的演讲 Libraries: A First Step Toward Standard C++ Dependency Management 已在 YouTube 上发布。

根据《2023 开发者生态系统调查》,我们发现从以下源构建库的人越来越少:

软件包管理 C++

项目模型和构建系统

CMake 仍然高居榜首(尽管与 2022 年相比略有下降),而 msbuild 和 Makefiles 则持续下滑:
项目模型

如 Bryce 指出的,Ninja 正在成长。 来自 C++ Foundation Annual C++ Developer Survey “Lite” 的数据显示了更大的上涨:

C++ 调查的受众
这可能是因为 C++ Foundation 的调查更频繁地告知受访者“勾选所有适用项”。 它还提出了更多专门针对构建工具的问题,一些选择 Ninja 的受访者必须将其用作构建工具而不是项目模型。

安全干净的 C++ 代码

代码分析工具可以帮助我们编写安全干净的 C++ 代码。 哪些分析工具在社区中最受欢迎?

代码分析工具

基于 Clang 的工具当然会越来越受欢迎。

根本不使用代码分析的受访者比例保持在 30% 左右,而使用捆绑到 IDE 中的代码分析的受访者比例则有所下降。 为什么会这样?

CI 管道可能是部分原因。 不过,在集成到 CI/CD 管道中的代码分析方面,只有从 26% 到 27% 的轻微增长:

运行代码分析

根据我们的调查数据,一半的受访者在编译阶段运行代码分析。 这是一个错失的机会,因为在“编写代码、检测错误、修正错误”循环中运行静态代码分析可以节省大量时间。 现在的工具可以带来绝佳结果! 例如,CLion 中最新的数据流分析能够捕获死代码、null 指针解引用、内存泄漏、悬空指针和数组索引问题。 阅读我们的博文系列了解详情:

AI 已经到来!

2023 年是我们在开发者生态系统调查中询问 AI 相关问题的第一年。 我们很想知道有多少开发者已经在工作中采用 AI,以及他们将哪些任务和功能委托给 AI。 我们发现的几个要点:

    • 84% 的开发者或多或少熟悉生成式 AI 工具。

    • 43% 的开发者计划在不久的将来尝试 AI 工具。 20% 的受访者表示,最大的担忧显然是安全问题。

    • 最常见的是,开发者使用 AI 学习新事物、交流想法和总结内容。

开发者最耗时的活动是编写代码(排名第一,占 79%)和理解代码(排名第二,占 47%), 迅猛发展的 AI 显然已经在帮助开发者完成这两项任务。

JetBrains AI Assistant 现已正式推出,搭载大量新功能和改进,在 JetBrains IDE 中帮助您提高工作效率。在 CLion 中,AI Assistant 随时待命,它可以帮助您解释代码以及 CMake 和运行时错误、建议重构、生成文档和提交消息,并在上下文感知 AI 聊天中回答问题。 项目感知 AI 操作还可以利用扩展上下文提供更全面的结果。通过 JetBrains AI Service 订阅在 CLion 中以附加组件的形式使用 AI Assistant。

关于受众和调查方法

如果将 JetBrains 开发者生态系统调查中的 C++ 发现与 C++ Foundation Annual C++ Developer Survey “Lite” 中的发现进行比较,您可能会发现许多领域趋势相似,但也存在一些显著差异。 值得注意的一个重要事实是,C++ Foundation 调查的受众平均在 C++ 方面拥有更多经验:

比较受众
JetBrains 研究人员每年都尽最大努力收集最多样化的数据,包括:

    • 从学生到专业开发者,吸引具有不同经验的受访者。

    • 将调查翻译成 10 种语言,供更多人参与。

    • 通过从 17 个国家和地区收集足够大的样本来确保地理多样性。

您可以在调查的专属部分中了解我们的调查方法。 此外,我们将很快发布调查的匿名原始数据,让感兴趣的读者能够验证报告或从中构建自己的切片。

最后,如果您在进行类似调查或想开始从社区收集数据,您可以观看我在 CppCon 2023 上的演讲 Surveying the Community: What Could Possibly Go Wrong?。在演讲中,我深入分析了调查方法的各个方面,包括如何消除品牌、定位和抽样偏差,并探讨了正确的问题如何改变 C++ 现实中的数据。

查看 C++ 报告

您对我们讨论的数据有什么疑问或者对最新的 C++ 社区趋势有什么看法吗? 请在评论区分享! 我们始终欢迎您的反馈!

本博文英文原作者:

image description