C++

Partager :

Ces questions n'ont été posées qu'aux développeurs ayant choisi C++ comme l'un de leurs trois principaux langages de programmation.

Quelles normes C++ utilisez-vous régulièrement ?

8%

C++98 / C++03

31%

C++11

25%

C++14

41%

C++17

23%

C++20

14%

Je ne sais pas

12%

C++98 / C++03

33%

C++11

24%

C++14

41%

C++17

23%

C++20

12%

Je ne sais pas

9%

C++98 / C++03

31%

C++11

24%

C++14

45%

C++17

25%

C++20

12%

Je ne sais pas

C'est génial que la migration progresse régulièrement. Je suis particulièrement satisfait de voir que les développeurs de jeux adoptent C++20 et j'attends avec impatience la prise en charge de toutes les plateformes de jeux. Cette implémentation représentera un défi pour les fournisseurs, mais je suis sûr que cela en vaudra la peine, rien que pour les concepts et les plages.

Guy Davidson

Head of Engineering Practice, Creative Assembly

Je suis vraiment surpris de voir le taux d'adoption de C++20. Les choses sont clairement en train de bouger. L'adoption des nouvelles normes est beaucoup plus rapide que par le passé.

Jason Turner

Formateur C++, Conférencier, Auteur, YouTuber

Je suis très heureux de constater que les versions des cinq dernières années sont les plus utilisées. De même, voir les versions antérieures à C++11 passer sous la barre des 10 % d'utilisation est une bonne nouvelle. Encore quelques années et nous pourrons arrêter de les inclure dans ce type d'enquêtes !

Titus Winters

Principal Engineer chez Google

Migration vers de nouvelles normes C++

42%

Non, je ne prévois pas de changer de norme C++

15%

vers C++11

11%

vers C++14

18%

vers C++17

16%

vers C++20

45%

Non, je ne prévois pas de changer de norme C++

9%

vers C++14

20%

vers C++17

26%

vers C++20

41%

Non, je ne prévois pas de changer de norme C++

30%

vers C++17

29%

vers C++20

47%

Non, je ne prévois pas de changer de norme C++

53%

vers C++20

Gardez en tête que beaucoup de développeurs utilisent des normes C++ différentes. Des enquêtes comme celle-ci nous rappellent la nécessité d'écrire du code qui fonctionne partout, pas seulement pour la dernière norme.

Guy Davidson

Head of Engineering Practice, Creative Assembly

Je trouve cela vraiment surprenant, car je ne vois pas encore beaucoup d'entreprises demander de formation à C++20. Beaucoup de gens s'estiment heureux de passer à C++17.

Jason Turner

Formateur C++, Conférencier, Auteur, YouTuber

Est-il prévu que votre projet actuel utilise l’une de ces fonctionnalités C++20 au cours des 12 prochains mois ?

48%

Concepts

43%

Modules

32%

Coroutines

3%

Autre

29%

Aucun

56%

Concepts

46%

Modules

30%

Coroutines

2%

Autre

28%

Aucun

53%

Concepts

53%

Modules

42%

Coroutines

1%

Autre

23%

Aucun

Je pense que la fonctionnalité [Modules] a encore besoin d'être développée, mais j'attends que l'on me prouve que j'ai tort.

Guy Davidson

Head of Engineering Practice, Creative Assembly

J'espère que les outils vont évoluer afin que l'utilisation de Modules soit facilitée au cours des 12 prochains mois !

Jason Turner

Formateur C++, Conférencier, Auteur, YouTuber

Quel IDE ou éditeur utilisez-vous le plus pour le développement C++ ?

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 propose une gamme d'IDE C++ pour vous aider à éviter les pièges et les tracas souvent associés au codage en C++ : CLion pour le développement multiplateforme et embarqué, ReSharper C++ pour les utilisateurs de Visual Studio, et Rider pour les développeurs de jeux Unreal Engine et C++.

Quels frameworks de tests unitaires utilisez-vous régulièrement ?

35%

Google Test

26%

Je n'écris pas de tests unitaires pour C++

17%

J'écris des tests unitaires, mais je n'utilise pas de framework

12%

Catch

9%

CppUnit

7%

Boost.Test

3%

CppUTest

3%

doctest

4%

Autre

34%

Google Test

17%

Je n'écris pas de tests unitaires pour C++

21%

J'écris des tests unitaires, mais je n'utilise pas de framework

14%

Catch

14%

CppUnit

7%

Boost.Test

5%

CppUTest

3%

doctest

4%

Autre

21%

Google Test

27%

Je n'écris pas de tests unitaires pour C++

21%

J'écris des tests unitaires, mais je n'utilise pas de framework

17%

Catch

11%

CppUnit

7%

Boost.Test

3%

CppUTest

4%

doctest

6%

Autre

Les ingénieurs préfèrent de loin écrire du code plutôt que des tests, et le temps passé à écrire des tests l'emporte sur tout autre avantage concret sur le long terme.

Guy Davidson

Head of Engineering Practice, Creative Assembly

La statistique selon laquelle un quart des développeurs n'écrivent pas de tests unitaires me fait froid dans le dos. Peu m'importe comment vous les exprimez ou le framework que vous utilisez, mais nous avons tous besoin d'écrire des tests.

Titus Winters

Principal Engineer chez Google

Comment gérez-vous vos bibliothèques tierces en C++ ?

25%

Le code source de la bibliothèque fait partie de mon build

24%

Je compile les bibliothèques séparément en suivant leurs instructions

21%

J'utilise un gestionnaire de paquets système

18%

Je télécharge des bibliothèques toutes prêtes sur Internet

14%

Aucune de ces propositions, je n'ai aucune dépendance

8%

vcpkg

6%

Conan

6%

Nuget

1%

build2

1%

Hunter

5%

Autre

28%

Le code source de la bibliothèque fait partie de mon build

26%

Je compile les bibliothèques séparément en suivant leurs instructions

24%

J'utilise un gestionnaire de paquets système

21%

Je télécharge des bibliothèques toutes prêtes sur Internet

9%

Aucune de ces propositions, je n'ai aucune dépendance

4%

vcpkg

5%

Conan

7%

Nuget

1%

build2

7%

Autre

34%

Le code source de la bibliothèque fait partie de mon build

25%

Je compile les bibliothèques séparément en suivant leurs instructions

17%

J'utilise un gestionnaire de paquets système

27%

Je télécharge des bibliothèques toutes prêtes sur Internet

12%

Aucune de ces propositions, je n'ai aucune dépendance

8%

vcpkg

4%

Conan

7%

Nuget

2%

build2

5%

Autre

Cela traduit la situation actuelle concernant l'empaquetage du code C++ pour une consommation par des tiers. J'attends avec impatience que ce problème soit résolu, mais je ne suis pas optimiste à ce sujet.

Guy Davidson

Head of Engineering Practice, Creative Assembly

L'état de la gestion des dépendances et des paquets m'attriste. Les builds reproductibles et les chaînes de dépendances claires apportent une valeur énorme et largement sous-estimée. « Ça fonctionne d'une manière ou d'une autre » est trop souvent la devise dans ce domaine.

Titus Winters

Principal Engineer chez Google

Quels modèles de projet ou systèmes de build utilisez-vous régulièrement ?

57%

CMake

33%

Makefile

33%

Projet Visual Studio

11%

Ninja

9%

Gradle

7%

Projet Xcode

6%

Système de build personnalisé

4%

Qmake

3%

Bazel

2%

Autotools

63%

CMake

43%

Makefile

29%

Projet Visual Studio

15%

Ninja

12%

Gradle

4%

Projet Xcode

4%

Système de build personnalisé

6%

Qmake

2%

Bazel

3%

Autotools

54%

CMake

33%

Makefile

49%

Projet Visual Studio

8%

Ninja

10%

Gradle

9%

Projet Xcode

8%

Système de build personnalisé

3%

Qmake

3%

Bazel

3%

Autotools

Selon moi, de nombreux ingénieurs C++ manifestent un syndrome de Stockholm envers CMake. Il est devenu le standard par défaut, pour le meilleur et pour le pire, comme le démontre la nette avance qu'il a encore sur ses concurrents.

Guy Davidson

Head of Engineering Practice, Creative Assembly

Quels compilateurs utilisez-vous régulièrement ?

67%

GCC

36%

Clang

32%

MSVC

12%

Clang-cl

11%

Intel

7%

Сompilateur pour microcontrôleurs

6%

IntelLLVM

3%

Compilateur personnalisé

2%

Autre

Dans CLion, vous pouvez utiliser les compilateurs basés sur GCC, Clang, MSVC et IAR. Pour les cas rares ou personnalisés, une fonctionnalité de compilateur personnalisé vous permet d'utiliser n'importe quel compilateur arbitraire dans CLion.

Quels autres langages de programmation utilisez-vous dans vos projets en plus de C++ ?

44%

Python

30%

C

19%

Langages de script Shell

15%

Java

12%

SQL

11%

JavaScript

11%

C#

9%

HTML / CSS

5%

Assembly

5%

Go

Python est omniprésent comme langage de programmation pour l'intelligence artificielle et le machine learning, donc pas de surprise ici. L'existence de bibliothèques de qualité comme numpy et pandas en fait un choix évident. Peut-être ont-elles besoin d'équivalents dans la bibliothèque standard, ou peut-être devons-nous régler les problèmes d'empaquetage.

Guy Davidson

Head of Engineering Practice, Creative Assembly

Parmi les outils suivants, quels sont ceux que vous ou votre équipe utilisez pour la mise en application des directives ou pour d'autres analyses ou aspects de qualité de code ?

37%

Outil fourni par mon IDE

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

Comme seules 30 % de personnes évitent l'analyse statique, je suis raisonnablement assuré que le code open source va gagner en fiabilité et en sécurité.

Guy Davidson

Head of Engineering Practice, Creative Assembly

Comment procédez-vous ou comment votre équipe procède-t-elle à l'analyse du code ?

48%

Lors de la compilation, en activant les vérifications du compilateur appropriées

26%

Elle est intégrée dans notre pipeline CI/CD

24%

Nous ne faisons jamais d'analyse de code

20%

Nous utilisons l'analyse dynamique

17%

Via des analyseurs de code statique tiers fonctionnant sur les machines des développeurs

1%

Autre

Quels outils ou techniques utilisez-vous pour optimiser les temps de build de vos projets C++ ?

42%

Optimisation des ajouts d'en-têtes et des dépendances

30%

En-têtes précompilés

22%

Parallélisation de la compilation des fichiers sources

17%

Cache du compilateur

15%

Modules

12%

Concaténation incrémentale

5%

Builds Unity

Dans ce cas, ce qui est petit est mieux. J'aimerais voir comment les en-têtes précompilés, les modules et les builds Unity vont interagir l'année prochaine.

Guy Davidson

Head of Engineering Practice, Creative Assembly

Merci du temps que vous nous avez accordé !

Nous espérons que vous avez trouvé ce rapport intéressant. N'hésitez pas à le partager avec vos amis et collègues.

Si vous avez des questions ou des suggestions, contactez-nous à surveys@jetbrains.com.