IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le langage C++ connaît-il un regain de popularité ? Il se hisse à la troisième place de l'index TIOBE et pourrait bientôt évincer le C de la deuxième place,
Le COBOL réintègre le Top 20 de l'index

Le , par Mathis Lucas

37PARTAGES

14  0 
La mise à jour du mois de juillet 2023 de l'index TIOBE, qui mesure la popularité des langages de programmation, rapporte que le langage C++ connaît un regain de popularité. Le C++ se situe actuellement juste derrière le C et le Python sur la liste de TIOBE. Le langage créé par Bjarne Stroustrup a ravi la place de Java il y a quelques mois et l'index indique que sa croissance montre que le langage C semble être sa prochaine victime. Le JavaScript se hisse à la 6e place de l'index TIOBE, la plus haute place qu'il ait jamais occupée dans ce classement, et l'infatigable COBOL réintègre le Top 20 après une longue période d'absence. La position du JavaScript est toujours critiquée.

L'index TIOBE est un indicateur de la popularité des langages de programmation. Il est mis à jour tous les mois. L'index est critiqué par les programmeurs en raison de la méthodologie utilisée par TIOBE, qui ne renseigne finalement que très peu sur l'utilisation réelle des langages, mais permet d'animer régulièrement un débat sur les différents forums. Et bien que son graphique donne toujours l'impression d'être animé, le classement des langages est en fait assez stable et peut rester pratiquement statique pendant de longues périodes. Cependant, la mise à jour du mois de juillet 2023 se distingue par une certaine agitation et une chose qui frappe d'emblée.


Il s'agit en effet de la proximité des classements des quatre premières langues. Le C++ se situe actuellement juste derrière le C et le Python sur la liste de TIOBE. « Il y a quelques mois, le langage de programmation C++ occupait la troisième place de l'index TIOBE (aux dépens de Java). Mais le C++ n'a pas fini son ascension. Le langage C semble être sa prochaine victime », indique la note accompagnant les données. Plus précisément, les données indiquent que le C++ est le seul des quatre premiers langages à avoir connu une évolution positive de son pourcentage d'une année sur l'autre, avec une augmentation de 0,79 % pour atteindre 10,8 %.

Mais qu'est-ce qui explique un tel regain de popularité pour le langage de programmation C++ ? Pour répondre à la question, TIOBE a cité la demande de performance comme moteur de l'utilisation du C++. « Le langage C a dominé ce domaine pendant très longtemps, mais il n'est pas extensible. Maintenant que les systèmes tendent à devenir plus grands, le langage C++ est la voie à suivre dans des domaines tels que l'automobile, les marchés financiers (trading), le médical et les semiconducteurs », a déclaré Paul Jansen, PDG du fournisseur de services de qualité logicielle TIOBE. Beaucoup remettent toutefois en cause la position du C++ dans l'index.


Python, qui est le premier langage de la liste, a enregistré la perte la plus faible de tout le Top 20, soit -0,01 %, ce qui lui confère une part de 13,42 %, tandis que Visual Basic a enregistré la perte la plus importante, soit -2,07 %. Ainsi, cette évolution, combinée au gain de 1,34 % de JavaScript, a permis à ce dernier de le dépasser et d'occuper la 6e place, sa plus haute position dans l'index TIOBE. Comme nous l'avons souvent commenté, étant donné son statut de langage de programmation le plus utilisé, la position de JavaScript dans l'index TIOBE a toujours été anormale. Comme le montre son graphique, il a eu une note allant jusqu'à 4 % dans le passé.

La position la plus basse de JavaScript, n°14, a été atteinte en octobre 2014 lorsque sa part a chuté à 1,77 %. Aujourd'hui, il a progressé trois mois de suite, passant d'une part de 2,1 % en avril à 3,11 % en juillet. Près de 65 ans après sa création, le langage de programmation COBOL, profondément ancré dans les systèmes bureautiques de longue date (banques, administrations publiques, etc.), refuse d'être enterré et continue de grignoter des places dans l'index. La mise à jour de juillet indique que le COBOL a également connu une hausse sur trois mois, passant d'une part de 0,41 % en avril à 0,86 % en juillet, ce qui l'a propulsé à la 20e place de l'index.


Le COBOL a atteint sa position la plus élevée, la 8e place, en août 2001, très près du début du graphique, et sa position la plus basse, la 47e, dix ans plus tard, lorsque sa part était de 0,28 %. En outre, d'autres langages de programmation ont également progressé dans le classement de juillet 2023 de l'index TIOBE. Matlab, Scratch et Rust égalent également leurs records historiques aux positions 10, 12 et 17 respectivement. Le PHP, dont la présence dans le Top 10 est fortement critiquée, occupe la 9e place dans le classement du mois de juillet 2023. Il est précédé par SQL. Selon TIOBE, voici les 10 langages de programmation les plus populaires :

  1. Python
  2. C
  3. C++
  4. Java
  5. C#
  6. JavaScript
  7. Visual Basic
  8. SQL
  9. PHP
  10. MATLAB


La méthodologie de l'index TIOBE est basée simplement sur le volume de recherche sur le nom des langages. Pour établir son classement mensuel, TIOBE exploite des données provenant de divers agrégateurs et moteurs de recherche, dont Google, Wikipedia, YouTube et Amazon. Pour qu'un langage soit classé, il doit être complet au sens de Turing, avoir sa propre entrée sur Wikipédia et obtenir plus de 5 000 occurrences de +"<langue> programmation" sur Google. Cette méthodologie a suscité une certaine controverse, les critiques insistant sur le fait qu'il ne s'agit pas d'un bon moyen de mesurer réellement l'adoption et l'utilisation d'un langage.


Toutefois, elle permet de savoir quels sont les langages qui font parler d'eux, du moins en ligne. Le classement de ce mois-ci met un accent particulier sur la popularité du C++ et il serait bien de suivre son évolution dans les mois à venir. Pour rappel, le C++ est un langage particulièrement ancien ; il a été créé par l'informaticien danois Bjarne Stroustrup et la première implémentation commerciale est apparue en 1985. Il est à l'origine d'une grande variété d'applications et de services existants, ce qui pourrait expliquer en partie sa popularité. Un grand nombre d'outils logiciels, notamment les compilateurs, sont encore écrits dans le langage C++.

Mais le C++ est de plus en concurrence avec des langages modernes tels que Rust. De nombreux experts s'accordent pour dire que Rust supplante le C++ en matière de sécurité, ce qui a d'ailleurs convaincu les développeurs de Linux à le choisir comme deuxième langage de développement du noyau, après le C. Mais Rust est encore relativement jeune, a une bibliothèque standard moins fournie que celle du C++ et propose actuellement peu d’options pour étendre ses fonctionnalités. Toutefois, Rust est considéré comme un meilleur choix d'avenir, où la sécurité des logiciels est vitale, et est plébiscité par les Big Tech et d'autres entreprises technologiques.

Source : classement TIOBE de juillet 2023

Et vous ?

Que pensez-vous du classement TIOBE de juillet 2023 ?
Que pensez-vous du regain de popularité du langage C++ ?
Qu'est-ce qui pourrait expliquer la croissance du langage C++ ?
Que pensez-vous de la position de son rival Rust dans ce classement ?
Que pensez-vous du retour du COBOL dans le Top 20 de l'index TIOBE ?

Voir aussi

C++ vs Rust : une comparaison pratique de la vitesse de compilation et de test des deux langages de programmation, par Matthew Glazar, ingénieur en génie logiciel


C++ est sacré langage de programmation de 2022 sur l'indice TIOBE. En termes de popularité, sur l'année écoulée, il est suivi respectivement par C et Python

Zig, présenté comme une alternative moderne au C, fait son apparition dans le top 50 de l'indice Tiobe des langages les plus populaires. Carbon, l'alternative C++ de Google, n'est classé que 168e

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de fdecode
Membre habitué https://www.developpez.com
Le 25/07/2023 à 11:43
Citation Envoyé par pboulanger Voir le message
rust [...] n'a pas encore la capacité d'optimisation que permet la métaprogrammation
À préciser... rust n'a pas la capacité de réflexion de langages comme C# ou scala.
Par contre, il a des mécanismes qui suppléent largement aux template C++:
- Le système de trait de rust associé aux types génériques et la possibilité de les conditionner,
- les systèmes de macro, notamment procéduraux.
Les paramètres génériques incluent des constantes pour les types entiers et booléens; le manquement qu'on pourrait reprocher au langage, c'est que l'arithmétique sur ces paramètres n'est pas encore stable.
Mais même une telle arithmétique peut être recréée par le système de type (crate Typenum par exemple).
8  0 
Avatar de chrtophe
Responsable Systèmes https://www.developpez.com
Le 25/07/2023 à 8:12
Un indice basé sur des recherches sur des langages ? quel est la fiabilité ? L'indice Juillet doit être basé sur les éléments de juin. Hors en juin, il y a les révisions et examens, de quoi bien biaiser les résultats.

Il serait plus logique de baser un indice de ce type sur les emplois proposés.
7  0 
Avatar de fdecode
Membre habitué https://www.developpez.com
Le 28/07/2023 à 16:56
Citation Envoyé par pboulanger Voir le message
la plupart des écoles qui forment des développeurs n'enseignent plus ce langage.
Citation Envoyé par byrautor Voir le message
Et oui, l'informatique et ses langages pourriront par leur ignorance du passé ! L'innovation forcenée mène à l'anarchie.
On est "presque" en politique, personne ne veut utiliser le peigne de ses voisins,même amis.
Pour ce qui est des écoles d'ingénieur généralistes où j'ai pu enseigner, j'ai vu disparaître l'enseignement de C++ ou de Java au profit de Python (sauf pour des enseignements spécialisés).
Je me souviens d'un autre temps, lorsqu'on nous enseignait le C en formation universitaire math/info -- et c'était un cursus plutôt théorique!

La compréhension des contraintes matérielles liées notamment à la gestion de la mémoire tend à disparaître de la culture informatique des ingénieurs généralistes, et les concepts de programmation objet enseignés restent limités. Du reste, ils ont une compréhension un peu floue de la notion de typage.
7  0 
Avatar de jo_link_noir
Membre expert https://www.developpez.com
Le 10/09/2023 à 17:00
Citation Envoyé par Guesset Voir le message
J'aime bien le C++ mais je regrette l'empilage que chaque version amène. Parti d'un langage squelettique, il est devenu verbeux. Les transtypages en sont un exemple.
Je ne pense pas que le transtypage ait bougé depuis 20 ans. Les plus difficiles à comprendre sont liés aux convertions des scalars. Convertions hérités du C. Les autres sont plutôt explicites et contrôlables par l'utilisateur (via constructeur ou l'opérateur de conversion: operator T ()). En fait, le seul ajout un peu lié a été fait il y a 10 avec initializer_list, qui — bien que partant sur une bonne indentation — est assez complexe à utiliser convenablement (mais je ne suis pas certain qu'on peut appeler ça du transtypage).

Citation Envoyé par Guesset Voir le message
Le multi paradigme est une course en avant qui tend à retirer de la cohérence au langage. Par exemple, comment concilier un typage plus fort avec auto ?
Le multi-paradigme, tous les langages le font à plus ou moins grande échelle. Ce n'est qu'une manière de représenter la manière dont un langage pourrait fonctionner pour adapter le point de vue le plus pratique à un problème donné. Même dans des langages qui se veulent purement fonctionnel comme Haskell, on se retrouve avec des structures mutables parce que ce n'est pas toujours la solution la plus efficace.

Quant à auto, il faudra m'expliquer comment faire un typage plus "fort" que celui défini par l'expression elle-même. Si auto ne convient pas (au niveau du type), c'est que l'expression n'était de base pas dans le type voulut. C'est pas un typage dynamique, mais statique, vous ne semblez pas savoir de quoi vous parlez.

Citation Envoyé par Guesset Voir le message
Certains ajouts semblent juste là pour la beauté intellectuelle. Est-ce que la métaprogrammation a vraiment un intérêt pratique ?
Oui. Premièrement pour la généricité. Pourquoi faire X fonction max() par type plutôt qu'une seule et unique fonction max() qui marche avec n'importe quel type (du moment que < est définit) ?
Deuxièmement, et c'est le plus complexe à faire, pouvoir spécialiser les comportements pour un type spécifique ou une catégorie de type dans le but d'étendre les comportements ou de choisir un algo plus efficace.

Citation Envoyé par Guesset Voir le message
Je trouve qu'un langage qui multiplie les éléments de contrôle du compilateur - les expressions déclarées constantes par exemple - tend à faire un grand écart entre abstraction et bas niveau. Les directives de compilation sont normalement extrinsèques au langage. Intégrer de plus en plus de mots clés ou de formes particulières (déclaration des strings par exemple) dédiés à ce contrôle me semble mélanger indument deux mondes.
Ce que tu appelles "des éléments de contrôle du compilateur" sont juste la séparation de 2 mondes qui existent dans le langage: runtime et compile-time. Dans certaines circonstances, on préfère avoir la garantie du compile-time pour de la vérification d'erreur à la compilation, des types dépendant de valeur ou simplement pour des raisons de performance. Quand on fait beaucoup de méta-programmation, c'est un besoin qui arrive assez vite.
(Je n'ai pas compris cette histoire de déclaration des strings)

Citation Envoyé par Guesset Voir le message
Bien sûr on peut se contenter de n'utiliser qu'une partie des fonctionnalités mais comment bien choisir sans tout connaître et comprendre ?
Comme avec n'importe quel langage finalement: l'expérience. Mais oui, il y a beaucoup de chose et pas mal qui devrait être supprimées / modifiées. Actuellement, les propositions sur les changements profonds sont confrontées à "stabilité d'ABI". Du coup, ce qui existe déjà est très difficilement modifiée.
6  0 
Avatar de Pyramidev
Expert éminent https://www.developpez.com
Le 24/07/2023 à 21:16
Citation Envoyé par Mathis Lucas Voir le message
Mais qu'est-ce qui explique un tel regain de popularité pour le langage de programmation C++ ?
C'est parce qu'une partie des offres d'emploi en Rust demandent de connaître C++.

Plus sérieusement, peut-être que les articles qui apparaissent en ce moment autour du C++23 font monter le score du C++ dans TIOBE. Par exemple, aujourd'hui, j'ai vu passer un article à propos du deducing this qui permet de remplacer les usages du CRTP.
5  0 
Avatar de chrtophe
Responsable Systèmes https://www.developpez.com
Le 10/09/2023 à 8:47
Le C++ moderne est une aberration inventée dans un Bureau De Complication Des Affaires Simples.
Les évolutions, il faut s'en servir si on en a besoin, ou qu'on les a compris, sinon c'est effectivement une complication.

Rien ne t’empêche d'écrire un code simple en C++ sans utiliser de fonctionnalités complexes. Mais il faut garder à l'esprit que ces fonctionnalités apportent un plus, après pas forcément pour tes cas de figure.
5  0 
Avatar de grunk
Modérateur https://www.developpez.com
Le 25/07/2023 à 9:07
Le C++ profite lui aussi de la vague de l'IA. Une fois qu'on as fini les apprentissages et/ou prototypage en python en général on livre en C++ pour assurer les perfs.
Ses récentes mise à jour le rendent aussi bien plus sexy (n'en déplaise au inconditionnels de C99) et moins effrayant à prendre en main
5  1 
Avatar de shenron666
Expert confirmé https://www.developpez.com
Le 09/09/2023 à 22:15
Ah pardon, je ne savais pas môsieur était de la "Haute"

j'invite humblement môsieur à signaler à Epic Games que le Unreal Engine est écrit dans un langage pourri
et qu'ils devraient faire appel à la tête de môsieur pour écrire autre chose que ce qu'on lit partout
môsieur devrait faire de même avec Google étant donné que TensorFlow est aussi écrit dans le langage qui ne sied guère à môsieur

sans prétention, une petite liste pour aider môsieur dans sa décadence
https://github.com/EvanLi/Github-Ran.../Top100/CPP.md
4  0 
Avatar de mintho carmo
Membre éclairé https://www.developpez.com
Le 13/09/2023 à 3:28
Citation Envoyé par Guesset Voir le message

Le multi paradigme est une course en avant qui tend à retirer de la cohérence au langage. Par exemple, comment concilier un typage plus fort avec auto ?
(...)
Je ne sais peut être pas de quoi je parle mais je préfère qu'on m'en fasse la démonstration plutôt qu'un assertion gratuite. Quand on déduit le type d'une expression c'est beaucoup plus flou qu'une définition explicite. Par exemple 1 peut être un entier signé ou non signé, sur 1, 2, 4 ou 8 octets (voire plus si affinités).
Le "vous ne semblez pas savoir de quoi vous parlez" de jo vient de la première partie du message.

Une variable déclarée avec auto a un type fixé, à la compilation, qui ne change pas pendant toute la durée de sa portée et permet les mêmes vérifications du compilateur qu'un type explicite. En cela, ça n'affaiblit pas du tout le typage fort du C++.

A la rigueur, tu aurais pu parlé de any ou variant (qui eux, effectivement, affaiblissent le typage fort) mais cette faiblesse n'est pas une nouveauté des nouvelles versions du C++. L'utilisation de void* (qui vient du C, donc présent dès l'origine du C++) est une faiblesse dans le typage fort du C++. Any et variant sont des renforcements du typage par rapport a void*.

L'association "typage fort" et "auto" n'a pas de sens.

Pareil pour "multi paradigme". La typage fort et auto n'ont rien à voir, ni l'un ni l'autre, avec les paradigmes. (A la rigueur auto pour le paradigme générique, mais pareil, c'est pas une nouveauté apportée par auto, le C++ supportait déjà le paradigme générique avec les templates).

Que tu trouves auto plus "flou" qu'un typage explicite, je peux le comprendre. Mais cela n'a rien a voir pour le coup avec le typage fort et le multi paradigme. (Et ce n'est pas une spécificité du C++, beaucoup de langages ont des typages non explicites. Et on peut aussi considérer que les templates sont une forme de typage non explicite)

Citation Envoyé par Guesset Voir le message

Je rêve d'une version d'apurement qui redonne au C++ une personnalité propre au lieu de le laisser devenir seulement un collector.

Mes propos visaient la tendance d'évolution du C++, pas seulement les toutes dernières.
Sauf que ce que tu critiques (meta programmation, cast, multi paradigme, etc) sont des choses qui existent depuis la première standardisation du C++. Un C++ qui n'aurait pas ce que tu décris, ça n'a jamais existé (au mieux, ca serait le C with class).

Alors, bien sur que les évolutions d'un langage apportent des complexités nouvelles à apprendre. Au même titre que le C++ est plus compliqué a apprendre que le C. Mais cette complexité apporte plus de possibilités et de simplicités aux devs.

Contrairement à ce que dit Jamatronic, "arrête de faire n'importe quoi" n'a jamais marché pour améliorer la qualité des logiciels. Ce qui marche, c'est toutes les vérifications automatiques, en particulier celles faites par le compilateur. Cette complexité du langage, c'est plus de possibilité pour les devs d'exprimer ce qu'ils souhaitent et de permettre au compilateur de vérifier si le code correspond à ce que le dev cherche a faire. const n'est qu'un moyen de dire au compilateur "je pense que la valeur de cette variable ne change pas" et le compilateur va pouvoir vérifier si c'est correct. Les cast permettent d'exprimer différents types de conversion (ce que ne permet pas le cast en C, c'est un cast qui fait plusieurs choses différentes) et le compilateur va pouvoir vérifier si c'est une conversion conforme au type de cast souhaité.

En pratique, sur des gros projets pro, cette complexité des ajouts récents du C++, ce n'est pas du temps perdu à l'apprentissage et l'utilisation, mais du temps gagné du l'ensemble du temps de vie d'un logiciel.
4  0 
Avatar de bacelar
Expert éminent sénior https://www.developpez.com
Le 31/07/2023 à 3:30
Les annonces d'emploi, c'est encore plus bidonné que tout le reste.

Entre les descriptions de postes de moutons à 5 pattes, les aspirateurs à CV, les courses à l’échalote entre SSII pour un même client, les filets dérivants de grosses boîtes américaine pour remplir leur "au cas z'où", etc...

Heu, SQL est Turing complet ???
3  0