Yearly, JetBrains conducts the Developer Ecosystem Survey to seize the panorama of the developer neighborhood, and this 12 months’s outcomes are lastly in. One of many greatest tendencies we noticed prior to now 12 months is wider AI utilization amongst software program builders, with a whopping 77% of them utilizing ChatGPT for numerous work-related duties. In different findings, Goal-C is on its final legs, Rust is extra well-liked than ever, and C++ and C rank eighth and tenth, respectively, within the checklist of prime languages. Many extra insights are to be present in our 2023 report, so let’s dive in.
In 2023, we collected 34,493 responses from software program builders worldwide. Amongst them, 2,627 recognized C++ as one in all their prime three main languages. We scrutinized the uncooked information to extract useful insights and share them with you. We additionally requested a number of C++ neighborhood members to chime in with their feedback. These embody famend specialists who symbolize the C++ language committee and firms that play a major function within the evolution of C++.
We thank the next neighborhood members for his or her ideas on our information and findings:
You possibly can view the 2023 report’s C++ questions and responses right here. Beneath I’ve summarized these findings and included the feedback of Inbal, Bryce, and Diego.
C++ requirements in frequent use
The downward tendencies for C++11 and C++14 proceed, and C++17 exhibits solely slight progress as individuals migrate to C++20 and C++23. Subsequent 12 months, we might realistically see the mixed share of C++20 and C++23 surpassing that of C++17. A part of the driving drive behind this shift is that C++ conferences have been tending to favor talks about C++20 and C++23.
Inbal: It’s nice to see such a good portion of embedded (37%) and video games (39%) builders working with C++20 already. I’ve been advocating for this transfer, as this model extends compile-time skills, that are very useful for industries with a number of emphasis on runtime efficiency. I hope to see related adoption charges for C++23 within the coming years.Â
It’s very attention-grabbing to see right here how C++98 and C++03 have a comparatively fastened base of customers, however ranging from C++11, there’s a vital adoption of newer variations (~4%). It’s additionally attention-grabbing how the newer variations, C++20 and C++23, have the biggest percentages of adoption. This can be a good indication that there are a minimum of 20% of builders who goal to be on the chopping fringe of know-how.
Bryce: A big bounce within the adoption of C++20 is smart, as implementations have develop into extra mature and feature-complete. I believe we’ll see a giant shift from C++17 to C++20 because the “base” dialect for a lot of the neighborhood over the subsequent few years.
It appears that evidently recreation builders are forward of the sport in adopting newer C++ requirements. This development is prone to be amplified when the language provides reflection—some of the eagerly awaited language options for recreation builders in view of its excessive significance for object serialization algorithms. By the best way, do you know that Unreal Engine emulates reflection through macros?
We additionally regarded again and in contrast the shares of adoption of current language requirements within the first 12 months of launch versus one 12 months later:
- C++17 began with 12% adoption in 2017 and reached 18% in 2018.
- C++20 began with 12% adoption in 2020 and reached 18% in 2021.
- C++23 began with 10% adoption in 2023. What share will it attain in 2024? Tune in a single 12 months from now.
Diego: C++23 exhibits 10% adoption in 2023, a bit decrease than C++20 adoption in 2020 (12%). That is most likely associated to what number of new options C++20 introduced in contrast with C++23.
The share of those that don’t plan emigrate to the newer requirements hovers round 50%, with the best determine (57%) coming from those that nonetheless use C++98/C++03. This phenomenon shouldn’t be new and has rather a lot to do with the necessity to use previous compiler variations, particularly in some embedded tasks.
Diego: The discovering that 57% of C++98/03 customers don’t plan to maneuver to a different C++ commonplace could possibly be learn as disappointing, however on condition that solely 8% of respondents are nonetheless utilizing C++98/03, it signifies that solely round 4% of the world’s C++ code is stagnant in that previous commonplace. This isn’t unhealthy and related stagnation can also be seen in different programming languages.
Programming languages used with C++
Enjoyable truth: Final 12 months, I managed to shock Jason Turner by revealing that Python is the primary companion to C++ for C++ builders. In 2023, Python nonetheless holds that place with a transparent lead over C.
In my C++ growth expertise, Python has been extensively used for wrapping the mission mannequin, and I do know many recreation growth studios nonetheless course of their .sln information with Python.
Diego: I really like Python as a tooling language, and I’ve seen a lot of corporations fortunately utilizing it of their C++ tasks for every kind of automation, testing, mission administration, information processing, providers, CI (steady integration), and so forth., not essentially at all times for product code. Python is yet one more very useful gizmo for the C++ developer toolbox.
As for Rust, there may be an attention-grabbing query we’re now trying into with the JetBrains RustRover crew. We’d like to know what number of Rust tasks are at the moment using C++ and vice versa. Most surveys and GitHub scans point out not more than 5% to 10%, regardless that huge corporations like Google are recognized to be migrating elements of their large codebases to Rust for safety and security causes. What’s your tackle that?
Bryce: Extra JavaScript and Rust being utilized in mixture with C++ appears to be the development right here. Given the rising reputation of Rust, it’s shocking that there’s not a extra fast progress of Rust getting used with C++. That implies it could be more durable to make use of Rust in current tasks (versus new tasks).
The main C++ instruments
C++ IDEs and editors of alternative
Most C++ builders have been sticking with the identical few IDEs and editors. The preferred full-featured IDEs, CLion and Visible Studio, occupy comparable positions out there, whereas Visible Studio Code rivals them as a wise editor. We’re blissful to be a part of this competitors, and we work onerous to evolve and ship the very best expertise to our customers.
By the best way, do you know Android Studio makes use of CLion’s C++ assist? It builds a proprietary part on prime of our supply code.
Diego: The market is clearly dominated by the Microsoft and JetBrains IDEs. It appears the fast progress of VS Code is lastly slowing down (a minimum of among the many C++ viewers) and has began to stabilize in equal elements for the three main gamers—CLion, Visible Studio, and Visible Studio Code.
Managing third-party libraries
Managing third-party libraries is among the greatest challenges in C++, even after 35 years of its existence. Within the C++ Basis Annual C++ Developer Survey “Lite” report, this peeve took first place and was named a “main ache level” by 47% of the respondents. The problem comes from the truth that C++ libraries are troublesome to outline, and utilizing them in a pre-built kind is hard.
However there may be hope but. At CppCon 2023, CMake’s Invoice Hoffman and Bloomberg’s Bret Brown talked concerning the preliminary commonplace for dependency administration in C++, utilizing metadata information to explain pre-built libraries. Their speak, Libraries: A First Step Towards Commonplace C++ Dependency Administration, is on the market on YouTube.
Per the Developer Ecosystem Survey 2023, we see fewer individuals constructing libraries from sources.
Inbal: I believe it is a nice indication that the huge assist of package deal managers throughout the C++ neighborhood is critical. As I’ve talked about, one of many methods (however not the one method) to advertise such assist is to advertise standardization of the necessities for these instruments, which is being mentioned within the committee. After all, there might at all times be a necessity for different options, however it will likely be attention-grabbing to see how the numbers will likely be affected if such generally used package deal managers are standardized.
Undertaking fashions and construct techniques
Our 2023 outcomes present CMake stays probably the most generally used construct instrument (regardless of a slight drop since final 12 months) whereas msbuild and Makefiles maintain shedding floor.
Bryce: It is vitally attention-grabbing to see CMake drop in market share and Ninja improve in market share. This isn’t a development I used to be conscious of. Maybe it’s simply noise, however given CMake’s fast progress till now, this information means that it has reached peak saturation. That’s troubling. It could be higher for C++ if we had a de facto commonplace construct system (70% to 90% adoption). I don’t know methods to interpret the expansion in “None” as a construct system, however I don’t assume it has any deep that means. Nobody shouldn’t be utilizing a construct system for big manufacturing tasks.
As Bryce notes, Ninja use is rising. The information from C++ Basis Annual C++ Developer Survey “Lite” present even bigger features.
The bigger progress of Ninja use indicated within the C++ Basis survey could be defined by the truth that this survey permits respondents to “examine all choices that apply.” It additionally asks extra questions that focus particularly on construct instruments, and among the respondents who choose Ninja should be utilizing it as a construct instrument quite than a mission mannequin.
Inbal: I discover this information fascinating. It signifies that there are vital preferences in every area, which indicators to me that if we contemplate reaching any uniformity in instruments by standardization (for instance, by standardizing construct techniques’ APIs), we should always make it possible for we go away sufficient room for flexibility, to have the ability to assist all the necessities of customers in our neighborhood.
Secure and clear C++ code
Code evaluation instruments assist us write protected and clear C++ code. Which of them are the most well-liked in the neighborhood?
Clearly Clang-based instruments are rising in reputation. The share of C++ builders who don’t use code evaluation in any respect stays across the similar stage, 30%, whereas the share of these utilizing code evaluation bundled into their IDE has dropped. What could possibly be the rationale?
Bryce: I believe the lower in IDE-provided evaluation instruments right here is indicative of individuals incorporating static evaluation into their CI, e.g. operating clang-tidy, clang-format, or Clang Static Analyzer in GitHub Actions.
Steady integration pipelines could be a part of the rationale. Nonetheless, taking a look at code evaluation built-in into CI/CD pipelines, we see solely a really modest progress from 26% to 27%.
Per our survey information, half of the respondents run code evaluation on the compilation stage. This can be a missed alternative, as a result of operating static code evaluation in a “write code, detect error, repair error” loop has been proven to result in vital time financial savings. And right this moment’s instruments can obtain some incredible outcomes.
For instance, the most recent information circulation evaluation in CLion is able to catching useless code, null pointer dereferences, reminiscence leaks, dangling pointers, and array index points. Learn our weblog submit collection to be taught extra:
AI-assisted growth is already right here
2023 was the primary 12 months we requested questions on AI within the Developer Ecosystem Survey. We had been curious to learn how many builders are already adopting generative AI of their work and which duties and capabilities they’re delegating to it. The important thing findings:
- 84% of builders are accustomed to generative AI instruments in a technique or one other.
- 43% of builders are planning to attempt AI instruments within the close to future. The largest concern is safety, reported by 20% of respondents.
- Most frequently builders are utilizing AI to be taught new issues, brainstorm concepts, and summarize content material.
Builders cited writing code (79%) and understanding code (47%) as their most time-consuming actions. With the fast evolution of AI, it’s no surprise it will possibly already assist builders with each of those duties.
For JetBrains IDE customers, JetBrains AI Assistant is now usually out there with various new and improved options to extend productiveness. In CLion, AI Assistant is at all times on standby to clarify code, clarify CMake and runtime errors, counsel refactorings, generate documentation, generate commit messages, and reply questions in a context-aware AI chat. Undertaking-aware AI actions are additionally out there to offer extra complete outcomes utilizing prolonged context. You should utilize AI Assistant in CLion as an add-on with a JetBrains AI Service subscription.
In regards to the survey viewers and methodology
For those who examine the C++ findings within the JetBrains Developer Ecosystem Survey with these within the C++ Basis Annual C++ Developer Survey “Lite” report, you’ll possible spot related tendencies in lots of areas, but additionally some vital variations. One necessary level to bear in mind is that the viewers of the C++ Basis survey, on common, has rather more expertise in C++.
JetBrains researchers do their finest yearly to gather probably the most numerous information. We try to:
- Appeal to respondents with various quantities of expertise, from college students to skilled builders.
- Make the survey accessible in additional world areas by translating it into 10 languages.
- Guarantee geographical variety by amassing sufficiently giant samples from 17 nations.