État de l'écosystème des développeurs C++ en 2021 : les standards les plus utilisés,
les EDI et éditeurs les plus populaires, la gestion des bibliothèques tierces

JetBrains a publié un nouveau rapport sur l'état de l'écosystème des développeurs en 2021. Ce rapport présente les résultats combinés de la cinquième enquête annuelle menée par l'éditeur de logiciels pour les développeurs. Près de 32 000 développeurs de 183 pays ou régions y ont participé cette année, ce qui a permis à JetBrains de cartographier le paysage de la communauté. Vous y trouverez les dernières tendances de l'industrie technologique, ainsi que des faits intéressants sur les outils, les technologies, les langages de programmation et de nombreuses autres facettes du monde de la programmation.

Dans ce volet, nous allons nous intéresser à la partie C++.

Les standards C++ les plus utilisés sont C++ 17, suivi de C++ 11 et de C++ 14

Nom : C++.png
Affichages : 9937
Taille : 5,4 Ko

À ce propos, Matt Godbolt, créateur de l'explorateur de compilateur, indique : « C'est agréable de voir l'adoption du C++ moderne. Un répondant sur cinq utilise la dernière norme, ce qui est formidable, et beaucoup d'autres prévoient de passer au moins à C++17 l'année prochaine. Les modules et les concepts semblent être de puissants facteurs de motivation ».

41 % des développeurs C++ 98/03 n'envisagent pas de faire de migration. Mais pour ceux qui l'ont planifiée, 17 % s'intéressent à C++ 11, 17 % à C++ 17 et 17 % à C++ 20. Du côté des développeurs C++ 17, plus de la moitié envisagent de se tourner vers C++ 20.

Andreas Kling, Créateur de SerenityOS et de la chaîne YouTube associée, estime « qu'il est logique que de nombreuses personnes qui étaient déjà sur C++17 soient impatientes d'adopter C++20. »

Concernant l'utilisation des fonctionnalités de C++20, il a été demandé aux développeurs si « Votre projet actuel prévoit-il d'utiliser l'une de ces fonctionnalités C++20 au cours des 12 prochains mois ». 48 % ont évoqué les Modules, 46 % les Concepts et 33 % les Coroutines.

Nom : fonctionnalités.png
Affichages : 4288
Taille : 6,4 Ko

Pour mémoire, parmi les nombreuses nouvelles fonctionnalités apportées par le C++ 20, deux fonctionnalités majeures sont à noter. Il s’agit des fonctionnalités dénommées Modules et celles dénommées Coroutines. Les Modules constituent une nouvelle alternative aux fichiers d’en-tête et apportent un certain nombre d’améliorations clés notamment en isolant les effets des macros et en permettant des générations évolutives. Cette fonctionnalité permet aux utilisateurs du langage de définir une limite d’encapsulation nommée, une première depuis ses 35 ans d’âge selon Herb Sutter, le président du comité de normalisation ISO C++. Il existait jusque-là trois fonctionnalités de ce type qui permettent aux développeurs de créer leurs propres mots de pouvoir en (a) donnant un nom défini par l'utilisateur en (b) quelque chose dont l'implémentation est cachée, explique Sutter. Ce sont : la variable (qui encapsule la valeur actuelle), la fonction (qui encapsule le code et le comportement) et la classe (qui encapsule les deux pour délivrer un ensemble d’états et de fonctions).

Andreas Kling a fait le commentaire suivant : « Les Modules sont en tête des classements comme prévu. Avec des temps de construction C++ qui empirent chaque année, il sera très intéressant de voir comment les gens utilisent les modules pour repousser cette tendance ».

Concernant les EDI ou éditeurs les plus utilisés pour le développement C++, 28 % ont évoqué Visual Code, 26 % CLion, 24 % Visual Studio.

Nom : EDI.png
Affichages : 4250
Taille : 7,0 Ko

À la question de savoir comment ils gèrent leurs bibliothèques tierces en C++, la plupart des développeurs (26 %) ont déclaré que la source de la bibliothèque faisait partie de la build. 23 % ont indiqué qu'ils compilent les bibliothèques séparément en utilisant leurs instructions. 21 % téléchargent des bibliothèques prébuild sur internet, la même portion de développeurs s'appuie sur un gestionnaire de paquets. D'autres sont plus spécifiques (par exemple 9 % s'appuient sur vcpkg, 7% sur Nuget, 5 % sur Conan)

Nom : bibliotheques.png
Affichages : 4263
Taille : 10,6 Ko

Matt Godbolt a noté que : « Près des trois quarts des personnes interrogées ne disposent pas d'une bonne solution de packaging ; devoir créer des bibliothèques séparément, préconstruire ou utiliser la gestion des packages système signifie soit un travail à fournir de la part du développeur, soit le recours à des parties externes pour les construire. Cela peut signifier prendre du retard sur les nouvelles versions et ajouter de la complexité à la mise à niveau ou au changement de compilateur ».

Concernant les méthodes de rapport d'erreurs qui sont autorisées sur leurs projets actuels (travail ou école), une écrasante majorité de développeurs (80 %) a parlé des exceptions.

Nom : erreur.png
Affichages : 4276
Taille : 11,5 Ko

Voici les modèles de projet ou systèmes de build que les développeurs utilisent régulièrement :
  • CMake
  • Makefile
  • Visual Studio project
  • Gradle

Nom : projet.png
Affichages : 4228
Taille : 7,5 Ko

Pour les compilateurs, GCC reste le plus populaire ; plus de trois développeurs C++ sur quatre l'utilisent régulièrement. Il est suivi par Clang (près d'un développeur sur deux l'utilise régulièrement), MSVC et Intel.

Nom : compilateurs.png
Affichages : 4224
Taille : 13,2 Ko

Pour Matt Godbolt, « il est intéressant de voir les compilateurs open source en tête de liste des compilateurs régulièrement utilisés. Dans mon monde, être sur Linux rend les compilateurs MSVC indisponibles, mais j'ai toujours imaginé que le nombre de programmeurs sur Windows serait plus grand que nous, et donc l'utilisation de MSVC serait plus élevée ».

Pour Andreas Kling, « Il est très intéressant de voir GCC croître plus que Clang. Pour l'anecdote, on a l'impression que GCC a fait de meilleurs progrès avec C++20 ».

Quels autres langages de programmation utilisent les développeurs dans leurs projets avec C++ ? Le Python en tête, suivi par C, puis un langage de script (Bash, Shell, Powershell), Java et JavaScript.

Nom : langage.png
Affichages : 4173
Taille : 9,7 Ko

État de l'écosystème des développeurs C++ en 2021
État de l'écosystème des développeurs en 2021 : découvrez les dernières tendances de l'industrie technologique, les outils, les technologies et les langages de programmation les plus populaires

Et vous ?

Quels sont les standards C++ que vous utilisez le plus ?
Avez-vous prévu d'effectuer une migration pour un projet (actuel ou futur) ? Vers quel standard ?
Prévoyez vous d'utiliser une ou plusieurs fonctionnalités C++20 (Modules, Concepts, Coroutine, autres) dans un de vos projets d'ici 12 mois ?
Quel EDI ou éditeur utilisez-vous le plus pour vos développements C++ ?
Comment gérez-vous les bibliothèques tierces ?
Quelle(s) méthode(s) de rapport d'erreur est/sont autorisée(s) dans vos projets actuels ?
Quel(s) compilateur(s) utilisez-vous régulièrement ?
Quel autre langage de programmation utilisez-vous dans vos projets C++ ?