2020年的开发人员生态系统:C++表现如何

2020-06-18 15:38:11

JetBrains已经连续第四年进行了开发者生态系统调查。它现在绝对不只是一个技术景观的快照-它是一个时间表,说明了这个景观的演变。通过一组每年重复的核心问题,它不仅让我们对生态系统的当前状态有了一个有用的了解,还让我们对社区的主要趋势有了一个更全面和更有价值的概述。

每年我们都会磨练我们的问题,以减少不确定性和模糊性,我们还会找到新的方法来验证数据。对于C和C++部分,我们现在对照C++基金会的“Lite”调查数据验证我们的调查结果。我们并不期望我们的结果与C++基金会的结果完全相同(我们的方法和受众是不同的)。相反,我们这样做是为了确保结果中的差异是有效的。这两项调查都强调了相同的整体趋势,这一点令人欣慰。

这项调查不仅仅满足了我们的好奇心-它的结果影响了我们工具的发展。让我们仔细看看今年的一些结果,并讨论它们随着时间的推移发生了怎样的变化,以及它们如何影响我们的决策。我们还请Compiler Explorer的创建者Matt Godbolt对结果进行了评论。

请查看完整的报告,其中涵盖了其他语言以及开发人员的生活方式和有趣的事实,并包括对调查方法的描述:

开发人员继续采用新的C++标准。所有使用C++20的开发人员的份额已经达到12%:

在前几年,这个问题的提法略有不同,因为当时没有C++20,C++98和C++03被错误地分开了。因此,现在应该重新启动采用标准的时间表。在前几年,它看起来是这样的:

显然,我们不仅对当前使用的标准感兴趣,还对开发人员迁移和采用较新版本的C++语言的计划感兴趣。今年,我们采取了一种新的方法来收集这些数据,允许受访者为不同的项目提供不同的答案。从结果中我们看到,略低于一半的受访者没有任何计划改变他们目前使用的标准,而其余的人则在考虑各种选择:最有趣的是,53%的受访者计划从C++17迁移到C++20!我们都知道C++20很大,看到如此多的开发人员计划在今年尝试它,这是令人惊讶的。

Matt:我很高兴几乎所有的人都离开了C++11之前的版本,很高兴看到十分之一的人都在试验最新的标准。一半的C++开发人员迁移到新标准是件好事,但这也意味着剩下的一半人停留在较旧的标准上。

在报告中,您可以看到问题的一些附加切片。虽然一般的C++事实很有用,但在许多情况下,将它们投射到特定的开发区域可能更准确。这可以考虑到更为保守和特定于供应商的嵌入式开发、严重受限于Windows的游戏开发等等。对于C++,我们几年前确定了三大领域:嵌入式开发、游戏开发和金融开发(包括HFT和银行系统)。要更仔细地了解这些领域的具体趋势,请单击我们在C++部分中为大多数问题切下的切片。

现在我们来谈谈工具。这里可能会有一种偏见,它会让我们的工具以及集成到其中的第三方工具排名更高。虽然这项调查是通过外部渠道广泛推广的,但我们仍然从许多JetBrains的粉丝和朋友那里得到了答案,他们显然已经习惯了使用我们的工具。尽管如此,外部验证表明我们的结果是可靠的。

这么多年后,排名前3位的项目模型列表仍然没有改变。CMake在几年前达到顶峰,并继续增长:

但游戏开发的领头羊是Visual Studio也就不足为奇了。

由于我们理解了支持各种C++项目模型(至少是顶级项目模型)的重要性,所以我们努力让缺失的成员加入进来。Makefile现在在克里昂!它还在早期访问预览中,但是已经准备好让您试用并报告任何反馈。

排名前三位的编译器是显而易见的,但是谁位居榜首呢?GCC在这四年里一直坐在榜首,但今年还是有了一些明显的增长。叮当声也在不断增长。

马特:GCC是最常用的编译器,对我来说并不太令人惊讶。编译器资源管理器日志显示,它仍然是使用最多的编译器,尽管它也是默认编译器,因此会歪曲结果。我很想看看编译图随着时间的推移是什么样子:根据我的个人经验,我开始越来越多地使用clang。

项目模型是必不可少的工具。即使您使用一些自定义脚本,您也不能轻易避免使用项目模型,因为您仍然需要构建整个项目。同时,可以将单元测试、代码分析或包管理等工作从工作流中删除。这可能会导致质量下降或项目维护问题,但一般来说,没有什么可以阻止开发人员放弃这些技术中的任何一种。

说到单元测试,到2020年初,我们可以看到34%的C++开发人员没有编写单元测试,15%的开发人员编写了单元测试,但没有使用任何具体的框架。随着Google Test在流行的C++单元测试框架中名列前茅,很高兴看到Catch现在达到了14%。

单元测试框架种类繁多。在我们的C++工具中,我们现在支持4个开箱即用的工具:Google Test、Catch、Boost.Test和doctest(在最近的2020.2 EAP版本中刚刚添加到Clion中)。

Matt:坦率地说,我很害怕最大的单一C++用户群体根本不编写单元测试!更甚的是,在金融界,30%的人不写测试!

这只是我们第二年对包管理器进行调查(我们从2019年开始),但我们肯定会看到像vcpkg和Conan这样的工具是如何分到一杯羹的:

同样,随着Windows生态系统主导着游戏开发,Nuget位居榜首也就不足为奇了。

Matt:不幸的是,依赖项管理器市场非常分散,没有明确的跨平台解决方案。

每年当我们看到与代码分析相关的问题时,我们都会感受到我们对社区的责任。三分之一不使用任何代码分析工具,另三分之一使用IDE提供的工具。这意味着如果IDE缺乏集成,并且没有在编辑器中调用代码分析器并检查结果的简单方法,那么它将根本不会被使用!显然,Clang系列工具非常流行(现在已经很好地集成到所有主要IDE中),Clang-Tidy和Clang分析器每年都在增长。

Matt:令人失望的是,在IDE之外使用静态分析的人如此之少。对我来说,这在IDE中是一件很棒的事情,但作为CI系统的一部分更好。

就这样!。你对这些趋势有什么看法?请在下面的评论区让我们知道!并查看报告中的完整结果:

原始数据(当然是匿名的)将在稍后发布,因此您可以自己进行更深入的调查和分析。

此条目被张贴在未分类和加标签的CPP、CPP新闻、时事通讯-CPP上。为固定链接添加书签。