by Anastasia Kazakova

The state of the C++ developer ecosystem

feature
Jan 16, 202413 mins
C++Development ToolsProgramming Languages

JetBrains’ Developer Ecosystem 2023 report shows where C++ developers stand on C++ language versions, IDEs, package managers, build tools, code analysis tools, and AI-assisted development. Let’s dive in.

shutterstock 561382627 C++ programming language source code syntax highlighting
Credit: iunewind

Every year, JetBrains conducts the Developer Ecosystem Survey to capture the landscape of the developer community, and this year’s results are finally in. One of the biggest trends we spotted in the past year is wider AI usage among software developers, with a whopping 77% of them using ChatGPT for various work-related tasks. In other findings, Objective-C is on its last legs, Rust is more popular than ever, and C++ and C rank eighth and tenth, respectively, in the list of top languages. Many more insights are to be found in our 2023 report, so let’s dive in.

In 2023, we collected 34,493 responses from software developers worldwide. Among them, 2,627 identified C++ as one of their top three primary languages. We scrutinized the raw data to extract valuable insights and share them with you. We also asked several C++ community members to chime in with their comments. These include renowned experts who represent the C++ language committee and companies that play a significant role in the evolution of C++.

We thank the following community members for their thoughts on our data and findings:

You can view the 2023 report’s C++ questions and responses here. Below I’ve summarized these findings and included the comments of Inbal, Bryce, and Diego.

C++ standards in common use

The downward trends for C++11 and C++14 continue, and C++17 shows only slight growth as people migrate to C++20 and C++23. Next year, we could realistically see the combined share of C++20 and C++23 surpassing that of C++17. Part of the driving force behind this shift is that C++ conferences have been tending to favor talks about C++20 and C++23.

c plus plus ecosystem 01 JetBrains

Inbal: It’s great to see such a significant portion of embedded (37%) and games (39%) developers working with C++20 already. I have been advocating for this move, as this version extends compile-time abilities, which are very beneficial for industries with a lot of emphasis on runtime performance. I hope to see similar adoption rates for C++23 in the coming years. 

It’s very interesting to see here how C++98 and C++03 have a relatively fixed base of users, but starting from C++11, there is a significant adoption of newer versions (~4%). It’s also interesting how the newer versions, C++20 and C++23, have the largest percentages of adoption. This is a good indication that there are at least 20% of developers who aim to be on the cutting edge of technology.

Bryce: A large jump in the adoption of C++20 makes sense, as implementations have become more mature and feature-complete. I think we’ll see a big shift from C++17 to C++20 as the “base” dialect for much of the community over the next few years.

It seems that game developers are ahead of the game in adopting newer C++ standards. This trend is likely to be amplified when the language adds reflection—one of the most eagerly awaited language features for game developers in view of its high importance for object serialization algorithms. By the way, did you know that Unreal Engine emulates reflection via macros?

We also looked back and compared the shares of adoption of recent language standards in the first year of release versus one year later:

  • C++17 started with 12% adoption in 2017 and reached 18% in 2018.
  • C++20 started with 12% adoption in 2020 and reached 18% in 2021.
  • C++23 started with 10% adoption in 2023. What share will it reach in 2024? Tune in one year from now.

Diego: C++23 shows 10% adoption in 2023, a bit lower than C++20 adoption in 2020 (12%). This is probably related to how many new features C++20 brought compared with C++23.

The share of those who don’t plan to migrate to the newer standards hovers around 50%, with the highest figure (57%) coming from those who still use C++98/C++03. This phenomenon is not new and has a lot to do with the need to use old compiler versions, especially in some embedded projects.

Diego: The finding that 57% of C++98/03 users don’t plan to move to another C++ standard could be read as disappointing, but given that only 8% of respondents are still using C++98/03, it means that only around 4% of the world’s C++ code is stagnant in that old standard. This is not bad and similar stagnation is also seen in other programming languages.

Programming languages used with C++

Fun fact: Last year, I managed to surprise Jason Turner by revealing that Python is the number one companion to C++ for C++ developers. In 2023, Python still holds that position with a clear lead over C.

c plus plus ecosystem 02 JetBrains

In my C++ development experience, Python has been widely used for wrapping the project model, and I know many game development studios still process their .sln files with Python.

Diego: I love Python as a tooling language, and I have seen lots of companies happily using it in their C++ projects for all kinds of automation, testing, project management, data processing, services, CI (continuous integration), etc., not necessarily always for product code. Python is yet another very useful tool for the C++ developer toolbox.

As for Rust, there is an interesting question we’re now looking into with the JetBrains RustRover team. We’d love to know how many Rust projects are currently utilizing C++ and vice versa. Most surveys and GitHub scans indicate no more than 5% to 10%, even though big companies like Google are known to be migrating parts of their huge codebases to Rust for security and safety reasons. What’s your take on that?

Bryce: More JavaScript and Rust being used in combination with C++ seems to be the trend here. Given the rising popularity of Rust, it’s surprising that there’s not a more rapid growth of Rust being used with C++. That suggests it may be harder to use Rust in existing projects (as opposed to new projects).

The leading C++ tools

C++ IDEs and editors of choice

Most C++ developers have been sticking with the same few IDEs and editors. The most popular full-featured IDEs, CLion and Visual Studio, occupy comparable positions in the market, while Visual Studio Code rivals them as a smart editor. We are happy to be part of this competition, and we work hard to evolve and deliver the best experience to our users.

By the way, did you know Android Studio uses CLion’s C++ support? It builds a proprietary component on top of our source code.

c plus plus ecosystem 03 JetBrains

Diego: The market is clearly dominated by the Microsoft and JetBrains IDEs. It seems the quick growth of VS Code is finally slowing down (at least among the C++ audience) and has started to stabilize in equal parts for the three major players—CLion, Visual Studio, and Visual Studio Code.

Managing third-party libraries

Managing third-party libraries is one of the biggest challenges in C++, even after 35 years of its existence. In the C++ Foundation Annual C++ Developer Survey “Lite” report, this peeve took first place and was named a “major pain point” by 47% of the respondents. The challenge comes from the fact that C++ libraries are difficult to define, and using them in a pre-built form is tricky.

But there is hope yet. At CppCon 2023, CMake’s Bill Hoffman and Bloomberg’s Bret Brown talked about the initial standard for dependency management in C++, using metadata files to describe pre-built libraries. Their talk, Libraries: A First Step Toward Standard C++ Dependency Management, is available on YouTube.

Per the Developer Ecosystem Survey 2023, we see fewer people building libraries from sources.

c plus plus ecosystem 04 JetBrains

Inbal: I think this is a great indication that the wide support of package managers across the C++ community is necessary. As I’ve mentioned, one of the ways (but not the only way) to promote such support is to promote standardization of the requirements for these tools, which is being discussed in the committee. Of course, there may always be a need for other solutions, but it will be interesting to see how the numbers will be affected if such commonly used package managers are standardized.

Project models and build systems

Our 2023 results show CMake remains the most commonly used build tool (despite a slight drop since last year) while msbuild and Makefiles keep losing ground.

c plus plus ecosystem 05 JetBrains

Bryce: It is very interesting to see CMake drop in market share and Ninja increase in market share. This isn’t a trend I was aware of. Perhaps it’s just noise, but given CMake’s rapid growth until now, this data suggests that it has reached peak saturation. That’s troubling. It would be better for C++ if we had a de facto standard build system (70% to 90% adoption). I don’t know how to interpret the growth in “None” as a build system, but I don’t think it has any deep meaning. No one is not using a build system for large production projects.

As Bryce notes, Ninja use is growing. The data from C++ Foundation Annual C++ Developer Survey “Lite” show even larger gains.

c plus plus ecosystem 06 JetBrains

The larger growth of Ninja use indicated in the C++ Foundation survey might be explained by the fact that this survey allows respondents to “check all options that apply.” It also asks more questions that focus specifically on build tools, and some of the respondents who select Ninja must be using it as a build tool rather than a project model.

Inbal: I find this data fascinating. It indicates that there are significant preferences in each domain, which signals to me that if we consider achieving any uniformity in tools by standardization (for example, by standardizing build systems’ APIs), we should make sure that we leave enough room for flexibility, to be able to support all the requirements of users in our community.

Safe and clean C++ code

Code analysis tools help us write safe and clean C++ code. Which ones are the most popular in the community?

c plus plus ecosystem 07 JetBrains

Clearly Clang-based tools are growing in popularity. The share of C++ developers who don’t use code analysis at all stays around the same level, 30%, while the share of those using code analysis bundled into their IDE has dropped. What could be the reason?

Bryce: I think the decrease in IDE-provided analysis tools here is indicative of people incorporating static analysis into their CI, e.g. running clang-tidy, clang-format, or Clang Static Analyzer in GitHub Actions.

Continuous integration pipelines might be part of the reason. However, looking at code analysis integrated into CI/CD pipelines, we see only a very modest growth from 26% to 27%.

c plus plus ecosystem 08 JetBrains

Per our survey data, half of the respondents run code analysis at the compilation stage. This is a missed opportunity, because running static code analysis in a “write code, detect error, fix error” loop has been shown to lead to significant time savings. And today’s tools can achieve some fantastic results.

For example, the latest data flow analysis in CLion is capable of catching dead code, null pointer dereferences, memory leaks, dangling pointers, and array index issues. Read our blog post series to learn more:

AI-assisted development is already here

2023 was the first year we asked questions about AI in the Developer Ecosystem Survey. We were curious to find out how many developers are already adopting generative AI in their work and which tasks and functions they’re delegating to it. The key findings:

  • 84% of developers are familiar with generative AI tools in one way or another.
  • 43% of developers are planning to try AI tools in the near future. The biggest concern is security, reported by 20% of respondents.
  • Most often developers are using AI to learn new things, brainstorm ideas, and summarize content.

Developers cited writing code (79%) and understanding code (47%) as their most time-consuming activities. With the rapid evolution of AI, it’s no wonder it can already help developers with both of these tasks.

For JetBrains IDE users, JetBrains AI Assistant is now generally available with a number of new and improved features to increase productivity. In CLion, AI Assistant is always on standby to explain code, explain CMake and runtime errors, suggest refactorings, generate documentation, generate commit messages, and answer questions in a context-aware AI chat. Project-aware AI actions are also available to provide more comprehensive results using extended context. You can use AI Assistant in CLion as an add-on with a JetBrains AI Service subscription.

About the survey audience and methodology

If you compare the C++ findings in the JetBrains Developer Ecosystem Survey with those in the C++ Foundation Annual C++ Developer Survey “Lite” report, you will likely spot similar trends in many areas, but also some significant differences. One important point to keep in mind is that the audience of the C++ Foundation survey, on average, has much more experience in C++.

c plus plus ecosystem 09 JetBrains

JetBrains researchers do their best every year to collect the most diverse data. We strive to:

  • Attract respondents with varying amounts of experience, from students to professional developers.
  • Make the survey accessible in more world regions by translating it into 10 languages.
  • Ensure geographical diversity by collecting sufficiently large samples from 17 countries.

You can learn more about our methodology in the methodology section of the survey report. In addition, we will soon publish the anonymized raw data from the survey so that anyone interested will be able to verify the report or build their own slices from it.

Finally, if you run similar surveys or you would like to start collecting data from the C++ community, you may want to listen to my talk from CppCon 2023, Surveying the Community: What Could Possibly Go Wrong? In this talk, I dive into the aspects of survey methodology including how to remove branding, targeting, and sampling biases, and I explore how a properly asked question can change the data drawn from our C++ reality. The recording is available on YouTube. View the full C++ report here.

Anastasia Kazakova is a C++ developer now working as product marketing manager for C++ tools at JetBrains.

Generative AI Insights provides a venue for technology leaders—including vendors and other outside contributors—to explore and discuss the challenges and opportunities of generative artificial intelligence. The selection is wide-ranging, from technology deep dives to case studies to expert opinion, but also subjective, based on our judgment of which topics and treatments will best serve InfoWorld’s technically sophisticated audience. InfoWorld does not accept marketing collateral for publication and reserves the right to edit all contributed content. Contact doug_dineley@foundryco.com.