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 !

Bjarne Stroustrup publie un article dans lequel il explique comment C++ a réussi à s'épanouir
Dans un monde surpeuplé de langages et changeant de 2006 à 2020

Le , par Stéphane le calme

399PARTAGES

15  0 
En 2006, le C ++ était largement utilisé dans l'industrie depuis 20 ans. Il contenait des parties qui avaient survécu inchangées depuis leur introduction dans C au début des années 1970 ainsi que des fonctionnalités qui étaient nouvelles au début des années 2000. De 2006 à 2020, la communauté des développeurs C ++ est passée d'environ 3 millions à environ 4,5 millions. C'était une période où de nouveaux modèles de programmation ont émergé, des architectures matérielles ont évolué, de nouveaux domaines d'application ont gagné en importance, et plusieurs langages bien financés et commercialisés professionnellement se sont battus pour dominer.

Comment le C ++, un langage plus ancien sans support commercial sérieux, a-t-il réussi à prospérer face à tout cela ? C’est la question à laquelle s’efforce de répondre Bjarne Stroustrup dans son article Thriving in a Crowded and Changing World : C++ 2006–2020 (s'épanouir dans un monde surpeuplé et changeant: C ++ 2006 – 2020).

Cet article se concentre sur les principaux changements apportés à la norme ISO C++ pour les révisions de 2011, 2014, 2017 et 2020. La bibliothèque standard représente environ les 3/4 de la norme C++ 20, mais cet article se concentre principalement sur les fonctionnalités du langage et les techniques de programmation qu'elles prennent en charge.

En guise d’introduction, il explique :

« À l'origine, j'ai conçu C ++ pour répondre à la question "Comment manipulez-vous directement le matériel informatique et supportez-vous également une abstraction efficace de haut niveau ?" Au fil des ans, C++ est passé d'une solution relativement simple basée sur une combinaison d'installations des langages C et Simula visant la programmation de systèmes sur des ordinateurs des années 1980 à un outil beaucoup plus complexe et efficace pour une gamme extraordinaire d'applications. Il conserve son double objectif:
  • Mappage direct des constructions de langage avec les installations matérielles
  • Abstraction sans frais généraux

« Les abstractions sont représentées dans le code comme des fonctions, des classes, des modèles, des concepts et des alias. C++ est un langage vivant, il change donc pour répondre à de nouveaux défis et les styles d'utilisation évoluent. Ces défis et changements dans la période de 2006 à 2020 sont au centre de cet article. Bien sûr, le langage ne change pas de lui-même; il est changé par les gens. C'est donc aussi l'histoire des personnes impliquées dans l'évolution du C ++, la façon dont elles perçoivent les défis, interprètent les contraintes sur les solutions, organisent leur travail et résolvent leurs inévitables différences. Lorsque je présente une fonctionnalité en langage ou bibliothèque standard, je le fais dans le contexte de l'évolution générale du C ++ et des préoccupations des individus impliqués à l'époque. Pour de nombreuses fonctionnalités acceptées au début de la période, nous bénéficions désormais du recul d'une utilisation industrielle massive.


« Le C++ est avant tout un langage industriel, un outil de construction de systèmes. Pour un utilisateur, "C++" n'est pas simplement un langage tel que défini par une spécification; il fait partie d'un ensemble d'outils avec de nombreuses pièces:
  • Le langage
  • La bibliothèque standard
  • De nombreuses autres bibliothèques
  • Des bases de code massives (souvent anciennes)
  • Des outils (y compris d'autres langages)
  • L’enseignement et la formation
  • Le soutien communautaire

« Lorsque cela est possible et pertinent, je considérerai les interactions entre ces "parties".

« Il y a un mythe, un mythe très populaire, selon lequel les développeurs veulent que leurs langages soient simples. C'est évidemment le cas lorsque vous devez apprendre un nouveau langage, concevoir un cours ou décrire un langage dans un article académique. Pour de telles utilisations, avoir un langage incarnant clairement quelques principes clairs est un avantage évident et l'idéal. Lorsque l'accent passe de l'apprentissage à la fourniture et à la maintenance d'applications importantes, les demandes des développeurs passent de la simplicité à une prise en charge complète, à la stabilité (compatibilité) et à la familiarité. Les gens confondent invariablement la familiarité avec la simplicité et préfèrent la familiarité à la simplicité s'ils ont le choix. Une façon de voir le C++ est le résultat de décennies de trois exigences contradictoires :
  • Rendez le langage plus simple !
  • Ajoutez ces deux fonctionnalités essentielles maintenant !!
  • Ne cassez (aucune partie de) mon code !!!

« J'ai ajouté des points d'exclamation parce que ces points sont souvent livrés avec une bonne dose d'émotion. Je voulais rendre les choses simples tout en m’assurant que les choses complexes ne soient pas impossibles ou inutilement difficiles. Le premier point est essentiel pour les développeurs qui ne sont pas des défenseurs du langage ; le dernier point pour les personnes qui implémentent un code fondateur. La stabilité est une propriété essentielle pour tous les systèmes qui durent depuis des décennies, mais un langage vivant doit s'adapter à un monde en évolution.


« De longues listes de nouvelles fonctionnalités et des préoccupations pratiques très détaillées sont au cœur du développement de C ++, contrôlé par son comité de normalisation ISO. C’est ce sur quoi insistent les personnes les plus virulentes et les plus influentes de la communauté, et il serait imprudent de juger leurs préoccupations et opinions uniquement sur la base de vues philosophiques ou théoriques ».

L’article contient de longues listes de fonctionnalités documentant la croissance de C ++. Les points techniques importants sont discutés et illustrés par de courts fragments de code. En outre, il présente certaines propositions qui ont échoué et les discussions qui ont conduit à leur échec. Il offre une perspective sur le flux ahurissant de faits et de caractéristiques au fil des ans. L'accent est mis sur les idées, les personnes et les processus qui ont façonné le langage.

Les thèmes incluent des efforts pour préserver l'essence du C ++ grâce à des changements évolutifs, pour simplifier son utilisation, pour améliorer la prise en charge de la programmation générique, pour mieux prendre en charge la programmation au moment de la compilation, pour étendre la prise en charge de la programmation simultanée et parallèle, et pour maintenir une prise en charge stable de code vieux de décennies.

La norme ISO C++ évolue à travers un processus de consensus. Inévitablement, il y a une concurrence entre les propositions et des affrontements sur la direction, les philosophies de conception et les principes. Le comité est maintenant plus grand et plus actif que jamais, avec jusqu'à 250 personnes qui se réunissent à une cadence de trois réunions par an (réunions qui durent une semaine) et beaucoup d'autres y participant par voie électronique. Bjarne Stroustrup note qu’ils essayent (pas toujours avec succès) d'atténuer les effets de la conception par le comité, la paralysie bureaucratique et l'enthousiasme excessif pour une variété de « modes de langages ».

Les sujets techniques spécifiques au langage incluent le modèle de mémoire, la concurrence et le parallélisme, le calcul au moment de la compilation, la sémantique de déplacement, les exceptions, les expressions lambda et les modules. Concevoir un mécanisme pour spécifier les exigences d'un modèle sur ses arguments qui est suffisamment flexible et précis, mais n'impose pas de coûts d'exécution s'est avéré difficile. Les tentatives répétées de concevoir des « Concepts » pour cela ont leurs racines dans les années 1980 et touchent à de nombreux problèmes de conception clés pour C++ et pour la programmation générique.

La description est basée sur la participation personnelle aux événements clés et aux décisions de conception, appuyée par les milliers d'articles et les centaines de minutes de réunion dans les archives du comité des normes ISO C ++.

Source : S'épanouir dans un monde surpeuplé et changeant: C ++ 2006 – 2020 (Bjarne Stroustrup)

Et vous ?

Quels langages de développement utilisez-vous ? Est-ce par choix ou contrainte professionnelle ?
Que pensez-vous du C++ ?
Quels sont les éléments qui vous intéressent le plus dans ce langage ?
Que pensez-vous de la courbe d'apprentissage du C++ ?

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

Avatar de grunk
Modérateur https://www.developpez.com
Le 22/06/2020 à 14:55
Quels langages de développement utilisez-vous ? Est-ce par choix ou contrainte professionnelle ?
php,java,js/ts,c++ quasi quotiennement pour tous.

Que pensez-vous du C++ ?
C'est un excellent outil qui à su évoluer très favorablement. J'étais vraiment réticent à faire du C++ quand j'étais obligé de faire du C++98. Le passage à C++11 à vraiment fait du bien et l'a rapproché de langage de plus haut niveau en terme de confort d'utilisation.
En revanche la rétrocompatibilité introduit un truc que je trouve particulièrement pénible : Il y'a toujours 10 façons différentes de faire quelque chose. Quand on débute (et même après) il est , je trouve, difficile de savoir quelle est la vraie bonne façon de faire.
Je trouve également que souvent la librairie standard manque de fonction un peu plus haut niveau. On palie souvent à tout ca via boost qui devient presque obligatoire.

Que pensez-vous de la courbe d'apprentissage du C++ ?
Relativement simple au début puis très difficile quand on veux maitriser le langage. En général suffit de regarder un talk de la cppcon pour réaliser qu'on est une merde
3  0 
Avatar de darklinux
Membre extrêmement actif https://www.developpez.com
Le 22/06/2020 à 15:07
Quels langages de développement utilisez-vous ? Est-ce par choix ou contrainte professionnelle ?
C++ , SQL , JavaScript
Que pensez-vous du C++ ?

qu' il est très bien
0  0 
Avatar de kriska
Membre du Club https://www.developpez.com
Le 23/06/2020 à 13:17
Tout à fait d'accord avec Grunk, je le vois dans mes équipes le C++ est un langage avec lequel on peut rapidement coder quelque chose de fonctionnel avec des perfs correctes mais qui nécessite un investissement conséquent pour maîtriser les subtilités (ex: atomic cf. conf Fedor Pikus) ou les aspects avancés (Metaprogrammation).
Néanmoins avec des outils comme ReSharper ou Clang on peut rapidement moderniser son code et apprendre les nouvelles bonnes pratiques.
Après au niveau de Boost, je vois cette lib comme l'incubateur de la lib standard. Ça permet d'essayer et d'éprouver des choses qui pourront être intégré par la suite (il y a beaucoup d'exemple de feature du standard qui viennent de Boost).
0  0