C++

Teilen:

Diese Fragen wurden nur Entwickler*innen gestellt, die C++ als eine ihrer drei primären Programmiersprachen angegeben hatten.

Welche C++-Standards verwenden Sie regelmäßig?

8%

C++98 / C++03

31%

C++11

25%

C++14

41%

C++17

23%

C++20

14%

Ich weiß es nicht

12%

C++98 / C++03

33%

C++11

24%

C++14

41%

C++17

23%

C++20

12%

Ich weiß es nicht

9%

C++98 / C++03

31%

C++11

24%

C++14

45%

C++17

25%

C++20

12%

Ich weiß es nicht

Es ist großartig zu sehen, dass die Migration stetig voranschreitet. Ganz besonders freut mich die Akzeptanz von C++20 unter Game-Entwickler*innen, und ich hoffe auf eine Unterstützung durch alle Spieleplattformen. Die Implementierung wird zur Herausforderung für die Anbieter, aber ich bin mir sicher, dass es sich allein schon wegen Concepts und Ranges lohnen wird.

Guy Davidson

Leiter Engineering Practice, Creative Assembly

Ich bin wirklich überrascht über die Verbreitung von C++20. Es sind eindeutig Änderungen im Gange. Standards verbreiten sich viel schneller als in der Vergangenheit.

Jason Turner

C++-Dozent, Vortragsredner, Autor, YouTuber

Es freut mich sehr zu sehen, dass eine solide Mehrheit der Benutzer*innen Releases aus den letzten 5 Jahren verwendet. Dass der Anteil der Releases vor C++11 auf unter 10% gesunken ist, ist ebenfalls eine gute Nachricht. Noch ein paar Jahre und wir müssen sie in diesen Umfragen gar nicht mehr berücksichtigen!

Titus Winters

Principal Engineer bei Google

Einführung von C++-Standards

42%

Nein, ich habe nicht vor, auf einen anderen C++-Standard umzusteigen

15%

auf C++11

11%

auf C++14

18%

auf C++17

16%

auf C++20

45%

Nein, ich habe nicht vor, auf einen anderen C++-Standard umzusteigen

9%

auf C++14

20%

auf C++17

26%

auf C++20

41%

Nein, ich habe nicht vor, auf einen anderen C++-Standard umzusteigen

30%

auf C++17

29%

auf C++20

47%

Nein, ich habe nicht vor, auf einen anderen C++-Standard umzusteigen

53%

auf C++20

Denken Sie immer daran, dass alle Standards Benutzer*innen haben. Umfragen wie diese sind eine Erinnerung an uns, Code zu schreiben, der überall funktioniert, nicht nur auf dem neuesten Standard.

Guy Davidson

Leiter Engineering Practice, Creative Assembly

Für mich ist das besonders überraschend, da ich noch nicht viele Unternehmen sehe, die nach C++20-Schulungen fragen. Viele sind schon froh, zu C++17 wechseln zu können.

Jason Turner

C++-Dozent, Vortragsredner, Autor, YouTuber

Ist in Ihrem aktuellen Projekt die Nutzung dieser C++20-Merkmale innerhalb der nächsten zwölf Monate geplant?

48%

Concepts

43%

Module

32%

Coroutinen

3%

Sonstiges

29%

Keine

56%

Concepts

46%

Module

30%

Coroutinen

2%

Sonstiges

28%

Keine

53%

Concepts

53%

Module

42%

Coroutinen

1%

Sonstiges

23%

Keine

Ich bin der Meinung, dass die [Modul-]Funktion noch einiges an weiterer Entwicklung benötigt, aber ich hoffe, Unrecht zu behalten.

Guy Davidson

Leiter Engineering Practice, Creative Assembly

Ich hoffe, dass die Tools aufholen werden, sodass die Verwendung von Modulen in 12 Monaten ganz einfach sein wird!

Jason Turner

C++-Dozent, Vortragsredner, Autor, YouTuber

Welche IDE bzw. welchen Editor verwenden Sie bei der C++-Entwicklung am meisten?

28%

Visual Studio

28%

VS Code

24%

CLion

5%

Vi/Vim

3%

QtCreator

2%

Xcode

1%

Android Studio

23%

Visual Studio

33%

VS Code

25%

CLion

3%

Vi/Vim

3%

QtCreator

1%

Xcode

2%

Android Studio

43%

Visual Studio

17%

VS Code

18%

CLion

3%

Vi/Vim

2%

QtCreator

2%

Xcode

1%

Emacs

JetBrains bietet eine Reihe von C++-IDEs, die Ihnen helfen, typische Fallstricke und Probleme bei der C++-Programmierung zu vermeiden: CLion für die plattformübergreifende und Embedded-Entwicklung, ReSharper C++ für Visual-Studio-Benutzer*innen und Rider für die Entwicklung von Unreal-Engine- und C++-Games.

Welche Unit-Test-Frameworks verwenden Sie regelmäßig?

35%

Google Test

26%

Ich schreibe keine Unit-Tests für C++

17%

Ich schreibe Unit-Tests, verwende aber keine Frameworks

12%

Catch

9%

CppUnit

7%

Boost.Test

3%

CppUTest

3%

doctest

4%

Sonstiges

34%

Google Test

17%

Ich schreibe keine Unit-Tests für C++

21%

Ich schreibe Unit-Tests, verwende aber keine Frameworks

14%

Catch

14%

CppUnit

7%

Boost.Test

5%

CppUTest

3%

doctest

4%

Sonstiges

21%

Google Test

27%

Ich schreibe keine Unit-Tests für C++

21%

Ich schreibe Unit-Tests, verwende aber keine Frameworks

17%

Catch

11%

CppUnit

7%

Boost.Test

3%

CppUTest

4%

doctest

6%

Sonstiges

Entwickler*innen schreiben viel lieber Code als Tests für Code, und die Zeit, die auf das Schreiben von Tests draufgeht, überwiegt jeden echten langfristigen Nutzen.

Guy Davidson

Leiter Engineering Practice, Creative Assembly

Dass ein Viertel der Entwickler*innen keine Unit-Tests schreibt, lässt mich ausflippen. In welcher Form oder mit welchem Framework das geschieht, ist mir relativ egal – aber wir müssen alle Tests schreiben.

Titus Winters

Principal Engineer bei Google

Wie verwalten Sie Fremdbibliotheken in C++?

25%

Der Quellcode der Bibliothek ist Teil meines Builds

24%

Ich kompiliere die Bibliotheken separat gemäß den Anweisungen

21%

Ich verwende einen systemweiten Paketmanager

18%

Ich lade kompilierte Bibliotheken aus dem Internet herunter

14%

Keines davon; ich habe keine Abhängigkeiten

8%

vcpkg

6%

Conan

6%

Nuget

1%

build2

1%

Hunter

5%

Sonstiges

28%

Der Quellcode der Bibliothek ist Teil meines Builds

26%

Ich kompiliere die Bibliotheken separat gemäß den Anweisungen

24%

Ich verwende einen systemweiten Paketmanager

21%

Ich lade kompilierte Bibliotheken aus dem Internet herunter

9%

Keines davon; ich habe keine Abhängigkeiten

4%

vcpkg

5%

Conan

7%

Nuget

1%

build2

7%

Sonstiges

34%

Der Quellcode der Bibliothek ist Teil meines Builds

25%

Ich kompiliere die Bibliotheken separat gemäß den Anweisungen

17%

Ich verwende einen systemweiten Paketmanager

27%

Ich lade kompilierte Bibliotheken aus dem Internet herunter

12%

Keines davon; ich habe keine Abhängigkeiten

8%

vcpkg

4%

Conan

7%

Nuget

2%

build2

5%

Sonstiges

Hier kommt die aktuelle Situation bei der Paketierung von C++-Code für die Fremdnutzung zum Tragen. Ich würde mich freuen, wenn dieses Problem gelöst wird, aber ich bin nicht optimistisch.

Guy Davidson

Leiter Engineering Practice, Creative Assembly

Der aktuelle Stand beim Abhängigkeits- und Paketmanagement macht mich traurig. Reproduzierbare Builds und klare Abhängigkeitsketten haben einen enormen Wert. „Es funktioniert irgendwie“ ist viel zu oft das Motto in diesem Bereich.

Titus Winters

Principal Engineer bei Google

Welche Projektmodelle oder Build-Systeme verwenden Sie regelmäßig?

57%

CMake

33%

Makefile

33%

Visual-Studio-Projekt

11%

Ninja

9%

Gradle

7%

Xcode-Project

6%

Custom-Buildsystem

4%

Qmake

3%

Bazel

2%

Autotools

63%

CMake

43%

Makefile

29%

Visual-Studio-Projekt

15%

Ninja

12%

Gradle

4%

Xcode-Project

4%

Custom-Buildsystem

6%

Qmake

2%

Bazel

3%

Autotools

54%

CMake

33%

Makefile

49%

Visual-Studio-Projekt

8%

Ninja

10%

Gradle

9%

Xcode-Project

8%

Custom-Buildsystem

3%

Qmake

3%

Bazel

3%

Autotools

Bekannterweise habe ich CMake als Stockholm-Syndrom für C++-Entwickler*innen bezeichnet. Wie der deutliche Vorsprung vor der Konkurrenz zeigt, ist es zum De-facto-Standard geworden, was gute und schlechte Seiten hat.

Guy Davidson

Leiter Engineering Practice, Creative Assembly

Welche Compiler verwenden Sie regelmäßig?

67%

GCC

36%

Clang

32%

MSVC

12%

Clang-cl

11%

Intel

7%

Compiler für Microcontroller

6%

IntelLLVM

3%

Benutzerdefiniert

2%

Sonstiges

In CLion können Sie verschiedene Compiler verwenden: GCC-basiert, Clang, MSVC und IAR. Für seltene oder spezielle Fälle können Sie mit der Funktion Benutzerdefinierter Compiler jeden beliebigen Compiler in CLion einbinden.

Welche anderen Programmiersprachen verwenden Sie in Ihren Projekten zusammen mit C++?

44%

Python

30%

C

19%

Shell-Skriptsprachen

15%

Java

12%

SQL

11%

JavaScript

11%

C#

9%

HTML / CSS

5%

Assembly

5%

Go

Die Allgegenwart von Python als Programmiersprache für KI und ML sorgt dafür, dass es hier keine Überraschungen gibt. Die Verfügbarkeit hochwertiger Bibliotheken wie numpy und pandas macht die Sprache zu einer offensichtlichen Wahl. Vielleicht braucht es dafür Entsprechungen in der Standardbibliothek, oder wir müssen das Problem der Paketierung klären.

Guy Davidson

Leiter Engineering Practice, Creative Assembly

Welche der folgenden Tools verwenden Sie oder Ihr Team zur Durchsetzung von Richtlinien, zur Sicherung der Codequalität oder zur Codeanalyse?

37%

IDE-eigene Tools

24%

Clang-tidy

21%

ClangFormat

17%

Clang-analyzer / Clang Static Analyzer

10%

Cppcheck

7%

Cpplint

6%

SonarLint / SonarQube / SonarCloud

4%

Coverity

2%

PVS-Studio

2%

Parasoft C/C++test

Da nur 30% der Menschen statischen Analysen aus dem Weg gehen, bin ich einigermaßen zuversichtlich, dass quelloffener Code immer sicherer wird.

Guy Davidson

Leiter Engineering Practice, Creative Assembly

Wie führen Sie oder Ihr Team Codeanalysen durch?

48%

Beim Kompilieren durch Aktivierung der entsprechenden Compilerprüfungen

26%

Es ist in unsere CI/CD-Pipeline integriert

24%

Wir führen nie Codeanalysen durch

20%

Wir verwenden die dynamische Analyse

17%

Über statische Code-Analyzer von Drittanbietern, ausgeführt auf dem Entwicklungsrechner

1%

Sonstiges

Welche Tools oder Techniken verwenden Sie, um die Build-Zeiten Ihrer C++-Projekte zu optimieren?

42%

Optimierung von Header-Includes und Abhängigkeiten

30%

Vorkompilierte Header

22%

Parallele Kompilierung von Quelldateien

17%

Compiler-Cache

15%

Module

12%

Inkrementelles Linking

5%

Unity-Builds

„Small is beautiful“ trifft in diesem Fall zu. Ich bin gespannt, wie vorkompilierte Header, Module und Unity-Builds im kommenden Jahr zusammenspielen werden.

Guy Davidson

Leiter Engineering Practice, Creative Assembly

Danke, dass Sie sich die Zeit genommen haben!

Wir hoffen, dass Sie unseren Bericht nützlich fanden. Teilen Sie diesen Bericht im Freundes- und Kollegenkreis.

Wenn Sie Fragen oder Anregungen haben, schreiben Sie uns bitte unter surveys@jetbrains.com.