C++

Partager :

Ces questions ont seulement été posées aux développeurs ayant indiqué que C++ était l'un de leurs trois principaux langages de programmation.

Partager :

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

8%

C++98 / C++03

27%

C++11

21%

C++14

43%

С++17

29%

C++20

10%

С++23

13%

Je ne sais pas

6%

C++98 / C++03

28%

C++11

27%

C++14

48%

С++17

37%

C++20

14%

С++23

13%

Je ne sais pas

5%

C++98 / C++03

25%

C++11

15%

C++14

48%

С++17

39%

C++20

16%

С++23

10%

Je ne sais pas

Diego Rodriguez-Losada Gonzalez

Architecte principal chez JFrog

Pas de surprises concernant le niveau d'adoption de C++23 et celui des normes antérieures, qui sont pratiquement les mêmes que ceux des années précédentes, on est dans une fenetre temporelle glissante. C++23 affiche un taux d'adoption de 10 % en 2023, légèrement inférieur à celui de C++20 en 2020 (12 %). Cela peut s'expliquer par le fait C++20 avait apporté un plus grand nombre de nouvelles fonctionnalités que C++23.

Inbal Levi

Ingénieure logiciel en chef chez MPGC Services Ltd (Millennium), membre du comité WG21

C'est super de voir que l'utilisation de C++20 est déjà aussi répandue dans les secteurs des systèmes embarqués et du développement de jeux. Cette version du langage accroît les capacités lors de la compilation, ce qui est bénéfique pour ces secteurs dans lesquels les performances d'exécution sont primordiales. J'espère que C++23 connaîtra des taux d'adoption similaires dans les années à venir.

Bryce Adelstein Lelbach

Architecte principal chez NVIDIA

La forte hausse de l'adoption de C++20 fait sens car ses implémentations sont devenues beaucoup plus mature et riches en fonctionnalités. Je pense qu'une grande partie de la communauté va passer de C++17 à C++20 au cours des prochaines années.

Migration vers de nouvelles normes C++

57%

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

12%

C++11

2%

C++14

16%

С++17

9%

C++20

5%

С++23

50%

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

1%

C++98 / C++03

4%

C++14

21%

С++17

13%

C++20

10%

С++23

42%

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

2%

C++98 / C++03

5%

C++11

25%

С++17

19%

C++20

7%

С++23

45%

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

1%

C++11

1%

C++14

31%

C++20

22%

С++23

Diego Rodriguez-Losada Gonzalez

Architecte principal chez JFrog

57 % des personnes qui utilisent C++98/03 disent qu'elle n'envisagent pas de changer de norme ? C'est un peu décevant, mais étant donné que seuls 8 % des repondants utilisent encore C++98/03, cela signifie qu'à peine 4 % du code C++ mondial reste sur cette ancienne norme, ce qui similaire à ce qui se passe avec d’autres langages de programmation.

Envisagez-vous d'utiliser l'une de ces fonctionnalités de C++20 dans votre projet actuel au cours des 12 prochains mois ?

48%
53%

Concepts

43%
49%

Modules

32%
29%

Coroutines

3%
3%

Autre

29%
21%

Aucun

Diego Rodriguez-Losada Gonzalez

Architecte principal chez JFrog

Bien que de gros progrès aient été faits récemment au niveau de la prise en charge des modules C++20 dans les systèmes de build et l'écosystème, je suis étonné que la moitié des répondants prévoient d'utiliser les modules C++20 (en production je suppose) dans les 12 prochains mois. Cela me semble beaucoup et je ne pense pas que cela sera le cas en réalite.

Inbal Levi

Ingénieure logiciel en chef chez MPGC Services Ltd (Millennium), membre du comité WG21

Je suis vraiment contente du taux d'adoption rapide des fonctionnalités dans le secteur des systèmes embarqués, qui est généralement connu pour sa lenteur dans l'adoption des nouveautés. Je pense que cela s'explique par les avantages significatifs que C++20 peut apporter à ce secteur.

Bryce Adelstein Lelbach

Architecte principal chez NVIDIA

Je me demande combien de personnes ont réellement essayé d'utiliser les modules. On voit qu'il a beaucoup d'intérêt mais pas tellement d'adoption.

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

27%

Visual Studio Code

26%

CLion

26%

Visual Studio

4%

Vi / Vim

3%

Qt Creator

2%

Android Studio

2%

Xcode

1%

NetBeans

1%

Sublime

1%

Emacs

1%

KDevelop

1%

AppCode

1%

Eclipse CDT

4%

Autre

34%

Visual Studio Code

29%

CLion

19%

Visual Studio

6%

Vi / Vim

3%

Qt Creator

1%

NetBeans

1%

Sublime

2%

Emacs

2%

Eclipse CDT

3%

Autre

20%

Visual Studio Code

30%

CLion

30%

Visual Studio

2%

Vi / Vim

1%

Qt Creator

1%

Android Studio

2%

Xcode

2%

Sublime

2%

Emacs

1%

KDevelop

1%

Eclipse CDT

1%

Atom

8%

Autre

Diego Rodriguez-Losada Gonzalez

Architecte principal chez JFrog

Le marché est clairement dominé par Microsoft et JetBrains. Il semble que la croissance rapide de l'utilisation de VS Code commence finalement à ralentir (du moins parmi les développeurs C++) et que les trois principaux IDE – CLion, VS et VS Code – aient maintenant des parts de marché équivalentes.

Quels frameworks de tests unitaires utilisez-vous régulièrement, le cas échéant ?

26%

29%

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

17%

16%

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

35%

33%

GoogleTest

12%

12%

Catch

9%

9%

CppUnit

Diego Rodriguez-Losada Gonzalez

Architecte principal chez JFrog

29 % des répondants n'écrivent toujours pas de tests unitaires pour leur code C++, ce qui est décevant, même si ce chiffre baisse légèrement au fil des années. L'avenir du langage dépend aussi de l'évolution de ses utilisateurs sur ce point.

Inbal Levi

Ingénieure logiciel en chef chez MPGC Services Ltd (Millennium), membre du comité WG21

Je suis surprise d'apprendre qu'autant de développeurs écrivent des tests unitaires sans framework. Des efforts sont faits par le comité afin de promouvoir les gestionnaires de paquets. J'espère que dans les années à venir cela incitera plus de personnes à écrire des tests unitaires et à utiliser un framework pour le faire.

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

25%

24%

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

21%

21%

J'utilise un gestionnaire de paquets système

24%

19%

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

18%

18%

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

14%

15%

Je n'ai pas de dépendances

Diego Rodriguez-Losada Gonzalez

Architecte principal chez JFrog

Cela fait plaisir de voir que de moins en moins de développeurs compilent les bibliothèques manuellement en utilisant leurs instructions. Espérons que le recours aux solutions automatisées réduira encore davantage cette pratique, qui est propre aux écosystèmes C et C++.

Inbal Levi

Ingénieure logiciel en chef chez MPGC Services Ltd (Millennium), membre du comité WG21

Cela montre bien que la communauté C++ attend une prise en charge plus importante des gestionnaires de paquets.

Bryce Adelstein Lelbach

Architecte principal chez NVIDIA

Je pense qu'on pourra atteindre un point d'inflexion où ces gestionnaires de paquets (vcpkg, Conan, etc.) seront suffisamment matures et largement utilisés pour devenir une norme de facto. Mais nous n'en sommes pas encore là.

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

57%

54%

CMake

33%

29%

Projet Visual Studio

33%

28%

Makefile

11%

15%

Ninja

9%

6%

Gradle

Bryce Adelstein Lelbach

Architecte principal chez NVIDIA

Il est très intéressant pour moi de voir que de voir que la part de marché de CMake a baissé et que celle de Ninja a augmenté. Ce n'est pas une tendance dont j'avais connaissance. Ce n'est peut-être que du bruit, mais compte tenu de la croissance rapide de CMake jusqu'à présent, ces données peuvent vouloir dire qu'il atteint un point de saturation.

Quels compilateurs utilisez-vous régulièrement ?

65%

GCC

36%

Clang

31%

MSVC

13%

Clang-cl

11%

Intel

9%

Intel LLVM

7%

Сompilateur pour microcontrôleurs

3%

Compilateur personnalisé

2%

Autre

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

45%

Python

29%

C

16%

Langages de script Shell

14%

JavaScript

13%

Java

12%

SQL

10%

HTML / CSS

10%

C#

5%

Rust

5%

Assembly

4%

Go

4%

Lua

3%

TypeScript

3%

MATLAB

2%

Kotlin

2%

PHP

2%

Visual Basic

2%

Perl

1%

Objective-C

Diego Rodriguez-Losada Gonzalez

Architecte principal chez JFrog

Python aussi est très utile et mérite de figurer parmi les outils des développeurs C++.

Bryce Adelstein Lelbach

Architecte principal chez NVIDIA

La tendance est à l'utilisation de JavaScript et de Rust avec C++. Compte tenu de la popularité croissante de Rust, je suis surpris que l'utilisation combinee de Rust avec C++ ne soit pas plus importante. Cela peut suggérer qu'il est plus difficile d'utiliser Rust dans des projets existants que dans de nouveaux projets.

Parmi les outils suivants, lesquels utilisez-vous (vous ou votre équipe) pour appliquer les directives ou autres opérations d'analyse du code / d'amélioration de la qualité du code ?

37%

31%

Outil fourni par mon IDE

24%

27%

Clang-tidy

21%

24%

ClangFormat

17%

18%

Clang-analyzer / Clang Static Analyzer

10%

11%

Cppcheck

Bryce Adelstein Lelbach

Architecte principal chez NVIDIA

Je pense que la diminution de l'utilisation des outils d'analyse fournis par les IDE peut s'expliquer par une tendance à intégrer l'analyse statique dans la CI, par exemple en exécutant l'analyseur statique Clang-tidy/ClangFormat/Clang dans GitHub Actions.

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

50%

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

27%

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

23%

Nous ne faisons jamais d'analyse de code

19%

Nous utilisons l'analyse dynamique

18%

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++ ?

39%

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

28%

En-têtes précompilés

23%

Parallélisation de la compilation des fichiers sources

19%

Cache du compilateur

14%

Modules

12%

Concaténation incrémentale

6%

Builds Unity

4%

Incredibuild

1%

Electric Cloud

1%

Autre

32%

Aucun

46%

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

26%

En-têtes précompilés

29%

Parallélisation de la compilation des fichiers sources

22%

Cache du compilateur

17%

Modules

14%

Concaténation incrémentale

6%

Builds Unity

2%

Incredibuild

1%

Electric Cloud

1%

Autre

29%

Aucun

46%

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

35%

En-têtes précompilés

25%

Parallélisation de la compilation des fichiers sources

24%

Cache du compilateur

16%

Modules

16%

Concaténation incrémentale

11%

Builds Unity

7%

Incredibuild

1%

Electric Cloud

2%

Autre

28%

Aucun

Diego Rodriguez-Losada Gonzalez

Architecte principal chez JFrog

Il y a encore cinq ans, le marché des IDE pour C++ était essentiellement dominé par un seul produit, Visual Studio, qui était spécifique à Windows. On développait donc sous Windows pour avoir accès à un bon IDE. Aujourd'hui, deux principaux fournisseurs sont présents sur ce marché – JetBrains et Microsoft – et leurs IDE, CLion et Visual Studio Code, ne s'adressent pas qu'aux développeurs Windows.

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.