
dans un monde surpeupl� de langages et changeant de 2006 � 2020
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 ?




Vous avez lu gratuitement 1 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.