Le C++ doit �tre du C++, par David Sankel
R�sum�
Au cours des derni�res ann�es, la communaut� C++ a d� faire face � des situations difficiles dans les m�dias sociaux, � des appels � un soi-disant successeur et � des signes de r�glementations de s�curit� anti-C++ � venir. Tout cela vient s'ajouter au stress habituel des comit�s face � des conceptions concurrentes et � des difficult�s de hi�rarchisation des priorit�s. Dans une telle p�riode, il est facile de s'attarder sur les probl�mes ou d'adopter des positions f�rocement d�fensives.
Cet article tente de recadrer les r�cits non constructifs et d'affirmer que la v�ritable opportunit� du comit� est d'am�liorer la vie des gens. Nous montrerons comment cette perspective permet d'orienter la participation, l'orientation et les responsabilit�s du comit�.
Introduction
La communaut� C++ a travers� de nombreuses �preuves au cours des derni�res ann�es. Le pr�sent document ne tente pas de retracer cette histoire (Dieu nous en pr�serve !), mais reconna�t plut�t que les circonstances actuelles ont amen� les membres du comit� � se demander "Pourquoi sommes-nous ici ?", "La participation � la normalisation du C++ vaut-elle encore la peine ?", "Que r�serve l'avenir au C++ ?", et "O� devrais-je investir mes efforts ?". Les r�ponses apport�es aujourd'hui � ces questions d�finiront le C++ pour les ann�es � venir.
Le pr�sent document d�fend mon point de vue personnel et les orientations techniques qui en d�coulent. Mes opinions sont le fruit de 23 ann�es d'exp�rience industrielle en C++ et de 8 ann�es de participation active � des comit�s. Les innombrables conversations que j'ai eues avec des ing�nieurs dans le cadre de ma participation � la Fondation Boost, � la Bloomberg C++ Guild, aux conf�rences sur le C++ et � #include<C++> y ont �galement contribu�. Cependant, je ne pr�tends pas avoir toutes les r�ponses et je me r�serve le droit de changer d'avis lorsque de nouvelles informations se pr�sentent.
Ce document est divis� en trois parties. La premi�re examine diff�rentes id�es concernant la mission du Comit� de normalisation du C++ et affirme que la plus convaincante est d'am�liorer la vie des gens. La deuxi�me partie aborde certains mod�les sociaux et tentations qui conduisent � des d�cisions contre-productives. La derni�re partie se concentre sur les biais techniques et examine certains des choix imm�diats auxquels le comit� est confront�.
Remerciements
Certains des propos que je tiens ici ont �t� exprim�s avec plus d'�loquence dans d'autres ouvrages. Je renvoie le lecteur en particulier � Direction for ISO C++ (P2000R4) du groupe de direction et � Thriving in a Crowded and Changing World de Bjarne Stroustrup. Je citerai abondamment ces documents. How can you be so certain? (P1962R0) et Operating principles for evolving C++ (P0559R0) traitent �galement de sujets similaires.
Je m'en voudrais de ne pas remercier Niall Douglas, Inbal Levi, Bjarne Stroustrup et Herb Sutter pour leurs pr�cieux commentaires qui ont permis d'am�liorer consid�rablement ce document.
Mission
La plus grande menace
Comment pouvez-vous en �tre si certain ? affirme que "si nous ne sommes pas prudents, le C++ peut encore �chouer". Les principes de fonctionnement pour l'�volution du C++ sugg�rent des principes "afin de maintenir le C++ en vie, en bonne sant� et en progr�s". Ces d�clarations, qui repr�sentent un point de vue plus large de la communaut�, impliquent que le C++ est une entit� qui a acquis quelque chose de pr�cieux qui peut �tre perdu. Qu'est-ce que cela signifie exactement ?
Il est facile de constater que le C++ est un langage de programmation polyvalent qui convient - son adoption par des millions de personnes en est la preuve. Les ing�nieurs le ma�trisent en un temps raisonnable et l'utilisent pour r�soudre leurs probl�mes. C'est l'utilit� du C++ qui compte.
Nombreux sont ceux qui pensent que d'autres langages de programmation "menacent" le C++ ou ont le potentiel de lui "enlever" ce qu'il poss�de. Un examen plus approfondi r�v�le que la pr�sence d'un nouvel outil ne rend pas un outil existant moins performant, mais potentiellement plus performant.
Qu'en est-il de la l�gislation r�glementaire ? Elle ne peut pas plus modifier les capacit�s du C++ que celles de mon marteau. Le C++ fait ce qu'il fait et est utile l� o� il est utilis�. Contrairement � mon marteau, cependant, il existe une entit� qui a le pouvoir de d�grader l'aptitude du C++ : le comit� de normalisation du C++.
Le moyen le plus s�r de rendre une norme inutile est de dire oui � tout. Il est facile de comprendre pourquoi : la normalisation d'un fouillis complexe d'id�es incoh�rentes devient rapidement une "folie au point de mettre en p�ril l'avenir du C++"[1]. Si mon marteau est remplac� par un gadget complexe n�cessitant des milliers de pages d'instructions, il ne m'est plus utile. Pourtant, c'est exactement ce qui se passe avec le C++.
Si la plus grande menace qui p�se sur le C++ est le comit� de normalisation, la question se pose alors de savoir comment att�nuer le risque et l'aligner sur un bien plus grand.
Mission
Un organisme compos� de centaines d'individus ne peut fonctionner sans une mission unificatrice. Il existe de nombreuses id�es sur ce que devrait �tre la mission du WG21, mais voici quelques exemples qui m�ritent d'�tre pris en compte :
- Faire du C++ le meilleur langage au monde.
- Faire du C++ le seul langage utilis�.
- Faire du C++ le langage le plus populaire.
Les id�es de "meilleur", "unique" ou "plus populaire" langage sont discutables, mais leur impact est plus pr�occupant. Tout d'abord, cette perspective conduit � une aversion pour les autres langages, � la fois par fiert� et par crainte que ces autres langages soient "meilleurs". Consid�rons, par exemple, que 40 % des d�veloppeurs C++ veulent utiliser Rust et que 22 % le font d�j� ; ignorer Rust, c'est ignorer nos utilisateurs[2]. Deuxi�mement, positionner le C++ comme le "meilleur" langage conduit � greffer des caract�ristiques d'autres langages au d�triment de la complexit� et de la coh�rence. Enfin, beaucoup d'�nergie est d�pens�e en arguments inutiles affirmant que les avantages des langages "concurrents" sont exag�r�s et que les inconv�nients du C++ sont exag�r�s.
Nous avons besoin d'une mission plus constructive et je pense qu'il y en a une : am�liorer la vie des gens. Lorsque Range-based for loop a �t� introduite dans les compilateurs, des millions de d�veloppeurs ont souri et se sont dit "Ah, c'est bien". Il se peut m�me que cela leur ait permis de passer une bonne journ�e. C'est le genre de bienfait massif que le WG21 peut contr�ler et s'y aligner est incroyablement gratifiant.
Un �tat d'esprit altruiste �limine l'id�e de "concurrent". Est-ce qu'Habitat for Humanity s'ennuierait si le Peace Corps arrivait en premier dans une r�gion en d�tresse ? Bien s�r que non ! Ils se r�jouiraient de l'arriv�e de l'aide. Il devrait en �tre de m�me pour nous lorsque nos utilisateurs r�solvent leur probl�me � l'aide d'un outil diff�rent. Les autres communaut�s linguistiques qui aident nos utilisateurs sont nos alli�s. Nous ne devons pas l'oublier. Les guerres de territoire ne servent pas les int�r�ts de nos utilisateurs.
L'aspect social
Certains sch�mas de pens�e vont � l'encontre d'une mission visant � am�liorer la vie des gens. Il est important d'en �tre conscient, car ils ne manqueront pas de surgir.
Le C++ en tant qu'identit� personnelle et de groupe
L'une des premi�res questions que se posent les programmeurs dans un contexte social est : "Dans quel langage programmez-vous ? Cette question ouvre souvent la voie � des st�r�otypes regrettables. "Oh, un programmeur Java qui �crit du code lent". "Oh, un programmeur Python qui ne sait pas programmer dans un "vrai" langage". "Oh, un programmeur Go qui ...". Lorsque nous pensons au C++, nous pouvons �tre fiers de ma�triser un langage difficile, d'�tre capables d'�crire des codes tr�s performants et d'avoir une relation avec les plus grands travaux C++ du monde.
Si l'identification au C++ en tant que source de grandeur et de raison d'�tre pr�sente des avantages, elle a un co�t. Tout d'abord, comme il s'agit avant tout d'un transfert �motionnel, la raison s'en trouve obscurcie. Lors de ma premi�re r�union en commission, on m'a conseill� d'�viter de mentionner la programmation fonctionnelle, de peur que les gens ne rejettent mes arguments d�s qu'ils entendent ces mots. Deuxi�mement, une identification profonde avec le C++ peut cr�er des craintes profondes que le C++ devienne un langage "h�rit�" qui rende obsol�te l'ensemble des comp�tences (et m�me la personne !).
Je mentionne ces �l�ments parce qu'ils compromettent souvent la mission de normalisation visant � am�liorer la vie des gens. Nous devons �valuer le monde des langages de programmation sans que le tribalisme ne nous incite � ignorer ou � surcompenser les probl�mes.
Rh�torique contre-productive
On �crit et on parle souvent du C++ comme s'il s'agissait d'un �tre vivant. Des mots comme "fatal"[3], "fail"[4], "dead"[5], et "death"[6] sont courants dans notre litt�rature. Lorsque nous imaginons le C++ comme un �tre vivant, nous associons naturellement des ressources finies (utilisateurs actifs), la concurrence (d'autres langages) et la mort (obsolescence). Ce raisonnement est fondamentalement erron�. Le C++ n'est pas vivant, ne peut pas mourir et n'est en concurrence avec rien. C'est simplement un outil qui est parfois utile.
Nous devons nous �loigner de ce mode de pens�e. Combin�e au transfert �voqu� pr�c�demment, elle g�n�re de la peur et encourage l'id�e d'ennemis. Le manque actuel de coop�ration et de cr�dit entre les diff�rentes communaut�s linguistiques est tout � fait regrettable. Dans le pire des cas, les gens sont rabaiss�s � cause du langage de programmation auquel ils s'associent.
Souvenons-nous que a) les langages ne se battent pas, ce sont les gens qui se battent, b) d�nigrer les autres langages n'am�liore pas la vie des gens, et c) l'�ternit� du C++ n'est pas notre objectif.
La normalisation comme opportunit� personnelle ou comme g�rance
Lorsque l'on rejoint le comit� pour la premi�re fois, il est facile de voir la participation comme une opportunit� personnelle d'acqu�rir de l'expertise en C++, de c�toyer des c�l�brit�s et, pire encore, de laisser une trace dans le monde en faisant accepter une proposition. Bien que toutes ces choses se produisent effectivement, il y a quelque chose de beaucoup plus important en jeu ici.
Le groupe de direction pr�vient que "nous �crivons une norme sur laquelle des millions de programmeurs s'appuieront pendant des d�cennies, un peu d'humilit� s'impose"[7] Il ne s'agit pas d'un privil�ge qui se m�rite et aucun d'entre nous n'est vraiment qualifi� pour prendre ces d�cisions, mais nous sommes l�. Notre lourde responsabilit� l'emporte sur les opportunit�s personnelles.
Qu'est-ce que cette responsabilit� implique ? Cela signifie qu'il faut rejeter les propositions qui n'ont pas de valeur ajout�e compr�hensible. Cela signifie qu'il faut r�sister � la pression sociale lorsque l'on est contre quelque chose. Cela signifie qu'il faut se forger une opinion �clair�e en lisant le document, en testant la fonctionnalit� et en collaborant avec d'autres. Cela signifie qu'il ne faut dire "oui" que lorsque le risque est minimal. Par-dessus tout, c'est une question d'intendance : vous �tes le gardien de quelque chose qui vous d�passe.
Si vous devez r�diger une proposition, gagnez du temps et �vitez les frustrations en demandant l'aide de concepteurs exp�riment�s et d'experts en r�daction. Ils veulent vous aider ! Demandez-vous �galement si le probl�me que vous r�solvez justifie la complexit� et le risque suppl�mentaires. Le C++ est un langage qui "essaie d'en faire trop, trop vite"[8] et qui doit "devenir plus sobre et plus s�lectif"[9].
L'aspect technique
Tout aussi importantes que nos tendances sociales sont les tendances techniques qui vont � notre encontre. Cette section pr�sente plusieurs anti-mod�les, dont aucun n'est nouveau [10].
N�ophilie
Bjarne a d�clar� succinctement que "l'enthousiasme favorise la nouveaut�"[11]. Les innovations technologiques et les modes suivent une courbe de battage famili�re [12] qui commence par un pic d'attentes exag�r�es. Nous risquons de nous laisser emporter par l'enthousiasme et de standardiser des fonctionnalit�s qui, r�trospectivement, ne tiennent pas leurs promesses, s'int�grent mal au reste du langage et augmentent les co�ts d'apprentissage.
Prenons l'exemple des traits Rust, qui r�solvent des probl�mes similaires � ceux des concepts C++. La s�mantique explicite des traits offre plusieurs avantages, y compris des g�n�riques � v�rification de type s�par�e. Devrions-nous ajouter les traits au C++ ? Si nous le faisons, nous nous retrouverons avec deux fa�ons de r�soudre le m�me probl�me, avec des millions de lignes de code utilisant l'ancienne m�thode. De plus, la plupart des d�veloppeurs devront �tre familiers avec les deux pour �tre efficaces dans une grande base de code existante, ce qui aggravera les co�ts d'apprentissage du C++.
Ce n'est pas parce qu'un autre langage a quelque chose de potentiellement meilleur que le C++ que nous devons l'int�grer. "Suivre les Jones" n'est pas un bon service. Nous devrions nous demander comment les non-experts, qui constituent la plupart de nos utilisateurs, r�agiront lorsqu'ils verront une fonctionnalit� pour la premi�re fois dans le code de quelqu'un d'autre. Il s'agit souvent d'une frustration li�e au fait de devoir passer du temps � apprendre quelque chose qui ne pr�sente qu'un avantage marginal par rapport � ce qu'il remplace.
Fonctionnalit�s et priorit� aux experts
Le comit� C++, principalement compos� d'experts, laisse les programmeurs moyens "s�rieusement sous-repr�sent�s"[13]. Cela "oriente le comit� vers la l�gistique du langage, les fonctionnalit�s avanc�es et les questions d'impl�mentation, plut�t que de r�pondre directement aux besoins de la masse des d�veloppeurs C++, que de nombreux membres du comit� ne connaissent qu'indirectement"[14].
Le temps pass� sur les fonctionnalit�s expertes g�che des opportunit�s d'am�liorer la vie � grande �chelle. Lorsque nous classons une proposition par ordre de priorit�, nous devrions nous demander si elle r�sout un probl�me pour les experts ou pour le d�veloppeur moyen. Si c'est le premier cas, nous devrions s�rieusement envisager de passer � autre chose.
Le d�s�quilibre entre les experts se traduit �galement par des solutions trop compliqu�es qui requi�rent des comp�tences avanc�es pour des t�ches simples. Pensez aux obstacles � franchir pour faire fonctionner std::print avec un type personnalis� par rapport aux anciens op�rateurs de flux. Il est trop facile pour les experts de perdre le contact avec les novices et les ing�nieurs professionnels qui ne passent pas leur temps libre � apprendre les complexit�s avanc�es du C++, surtout lorsqu'ils sont entour�s d'autres experts.
L'une des choses les plus utiles que peuvent faire les membres des comit�s est de discuter des propositions avec les ing�nieurs d'application. "Est-ce quelque chose que vous utiliseriez ?". "Est-ce ergonomique ? "Est-ce difficile � apprendre ?". "Cela vaut-il la peine d'ajouter un chapitre au livre sur le C++ ? Ce type de retour d'information devrait peser plus lourd que les th�ories abstraites sur ce qu'un d�veloppeur id�al devrait vouloir.
La complexit�
Le groupe de direction consid�re que "le C++ est en danger de perdre sa coh�rence � cause de propositions bas�es sur des philosophies de conception diff�rentes et parfois mutuellement contradictoires et sur des go�ts stylistiques diff�rents" [15]. Bjarne pense que cela est d� � une combinaison de la croissance du comit�, de l'arriv�e de nouvelles personnes, de la sp�cialisation des membres et d'une diminution de la connaissance de l'histoire du C++ parmi les membres[16].
Les changements qui r�duisent la coh�rence augmentent la complexit�, ce qui accro�t les co�ts de formation. Il est beaucoup plus difficile d'embaucher des d�veloppeurs C++ que d'autres d�veloppeurs, non pas en raison de la demande, mais parce que la barri�re � l'entr�e est trop �lev�e. Moins de personnes veulent apprendre le C++ et moins d'�coles veulent l'enseigner. L'une des principales fa�ons dont nous pouvons am�liorer la vie des gens est d'aider nos utilisateurs � trouver des coll�gues.
Le groupe de direction se souvient qu'Alex Stepanov a sauv� le C++ du d�sastre en apportant de la consistance et de la coh�rence � la biblioth�que standard[17], et pourtant nous d�battons activement de la rupture de ces m�mes r�gles pour un ajout de biblioth�que relativement nich�. Nous avons r�cemment remplac� un simple mod�le std::function par pas moins de trois alternatives : std::copyable_function, std::function_ref, et std::move_only_function. Cela ne nous aide pas � r�soudre nos probl�mes de complexit� !
Je suis d'accord avec le groupe de conception pour dire que nous devons "viser la coh�rence"[18]. Voici trois suggestions concr�tes pour y parvenir :
- Limiter la tendance � centrer les discussions sur les propositions sur un domaine probl�matique �troit en demandant comment il s'int�gre dans l'ensemble de l'offre C++. "Est-ce que cela correspond au style commun du C++ ? "Est-ce que cela augmente la barri�re � l'entr�e du C++ ? Quel serait l'impact sur l'hypoth�tique "livre C++" ?
- Encourager les groupes d'�tude � obtenir un retour d'information pr�coce de la part des groupes d'�volution (EWG et LEWG) sur l'opportunit� des fonctionnalit�s[19] Les groupes d'�volution sont responsables de la prise en compte de la situation dans son ensemble. Le fait d'obtenir ce retour d'information avant une it�ration intensive de la commission d'�tudes peut �viter que des caract�ristiques ind�sirables ne prennent de l'ampleur, ce qui serait difficile � arr�ter.
- Surmonter la r�ticence � dire "Je ne pense pas que ceci ait sa place en C++". Nous ne rendons pas service aux auteurs en fournissant un retour d'am�lioration sur des propositions qui ne sont finalement pas souhaitables.
Les probl�mes de niche n�cessitent plus qu'un effort de niche
Au sein du comit�, nous consacrons souvent du temps � des choses qui n'int�ressent qu'un petit nombre de personnes. Il est difficile de dire "non" lorsque quelqu'un, quelque part, en b�n�ficierait. Nous avons �galement tendance � nous d�connecter mentalement au cours de ces discussions, ce qui fait que les propositions ne b�n�ficient pas d'une rigueur appropri�e.Citation:
Il est difficile pour un comit� de se rappeler qu'un langage ne peut pas tout faire pour tout le monde. Il est encore plus difficile d'accepter qu'il ne peut pas r�soudre les probl�mes les plus urgents de chaque membre.
Bjarne Stroustrup, Thriving in a Crowded and Changing World
Lorsque nous tombons dans ces pi�ges, 1) nous privons le plus grand nombre d'utilisateurs du temps consacr� � des propositions susceptibles d'am�liorer leur vie, 2) nous augmentons inutilement la complexit� du langage et de la biblioth�que, et 3) nous encourageons les propositions de niche.
Pour r�soudre ces probl�mes, il suffit de dire "non" plus souvent et, si n�cessaire, � plusieurs reprises. Les corrections de bogues mises � part, le comit� devrait consacrer son temps � un nombre plus restreint de propositions ayant un impact plus important. Les efforts consacr�s � la r�daction d'articles visant � r�soudre les b�tes noires du C++ sont mieux utilis�s pour r�diger des analyses et des rapports d'exp�rience sur des propositions � plus fort impact. Nous devrions faire plus pour reconna�tre ce travail.
Aller de l'avant
Cette section examine la s�curit� de la m�moire et une r�vision majeure du C++ � la lumi�re des principes de ce document.
S�curit� de la m�moire
Les documents officiels discutant de la l�gislation contre le C++ en raison de son "manque de s�curit� de la m�moire" ont suscit� l'�moi de la communaut�. Nous avons vu de gigantesques fils d'e-mails, un nouveau groupe d'�tude d�di� � la s�curit�, et de nombreux expos�s lors de conf�rences sur le C++. Ce qui est beaucoup moins r�pandu, c'est la demande des utilisateurs moyens de C++ pour des fonctionnalit�s de s�curit� de la m�moire ; ils sont beaucoup plus pr�occup�s par la vitesse de compilation. Lorsque la plupart des d�veloppeurs C++ n'ont pas adopt� des outils tels que Coverity et les v�rificateurs de lignes directrices du noyau C++, il est difficile de pr�tendre que les fonctions de s�curit� de la m�moire am�liorent sensiblement leur vie, du moins de leur point de vue.
Lorsque la s�curit� de la m�moire est une pr�occupation s�rieuse, nous voyons l'adoption de Rust pour les composants critiques. Pourtant, m�me ces d�veloppeurs ne demandent gu�re de fonctions de s�curit� C++. Leur probl�me est d�j� r�solu.
Le groupe de direction affirme qu'"aucun langage ne peut �tre tout pour tout le monde"[20] et je suis tout � fait d'accord. Rust et d'autres langages r�pondent avec succ�s aux besoins des ing�nieurs en mati�re de garanties de s�curit� de la m�moire dans les composants critiques. Ce n'est pas un espace dans lequel nos utilisateurs nous demandent d'aller, et ce faisant, nous risquons � la fois l'�chec et, oui, encore plus de complexit�.
R�vision majeure du C++
Au cours des deux derni�res ann�es, il est devenu � la mode de parler des "successeurs du C++", ce qui va de changements syntaxiques spectaculaires au remplacement du comit� C++ par une autre organisation. Quelle devrait �tre la r�ponse du comit� � ce ph�nom�ne ?
Pour les groupes qui tentent de cr�er un nouveau langage en dehors du comit�, je pense que notre r�ponse devrait �tre un soutien. Si ces initiatives ne cr�ent pas de confusion ou ne nuisent pas � nos utilisateurs, elles partagent notre objectif d'am�liorer la vie des gens. Lorsqu'elles r�ussissent, c'est une bonne chose. M�me si elles �chouent, les id�es qu'elles g�n�rent peuvent finalement aider nos utilisateurs.
Qu'en est-il de l'option de changer radicalement le visage du C++ dans le contexte du WG21 ? Un C++ 2.0, peut-�tre ? Si vous demandez � un d�veloppeur C++ typique comment nous pouvons am�liorer sa vie, une nouvelle syntaxe moderne et �l�gante ne sera pas en t�te de sa liste. Oui, les template et les typename sont fastidieux � lire et � taper, mais c'est ce qu'ils connaissent et ils pr�f�rent qu'on n'y touche pas. Il ne s'agit pas seulement d'une r�ticence au changement : nos utilisateurs veulent de la coh�rence dans leur base de code C++ autant que nous voulons de la coh�rence dans la norme.
Si un successeur au C++ devait un jour voir le jour, nos utilisateurs voudraient qu'il soit le meilleur possible. La composition du comit� n'a pas de qualit� magique qui le rendrait plus apte � construire un successeur que n'importe quelle autre entit�. L'inertie li�e � l'adoption de C++ 1.0 pourrait m�me conduire � l'adoption de C++ 2.0 alors que d'autres tentatives de successeur sont plus adapt�es. Ce ne serait pas une bonne chose pour nos utilisateurs.
En r�sum�, la plus grande opportunit� pour le comit� C++ d'am�liorer la vie des gens est de se concentrer sur le C++ tel qu'il est aujourd'hui pour mieux nous servir dans quelques ann�es sous les contraintes de la compatibilit�. Laissons les projets sp�culatifs de succession � des entit�s externes. Nous sommes d�j� suffisamment distraits.
Que devrions-nous faire ?
J'ai beaucoup parl� de ce que nous ne devrions pas faire. C'est intentionnel : nous devons en faire moins. Cependant, je ne veux pas donner l'impression que nous devrions refuser toutes les propositions. Il existe de nombreuses possibilit�s d'am�liorer la vie de nos utilisateurs par le biais de propositions. Voici quelques exemples concrets :
- Un hachage plus rapide et des combinateurs de hachage. Les interfaces "hash map" et "hash set" de la biblioth�que standard datent maintenant de plusieurs dizaines d'ann�es. Au cours de cette p�riode, nous avons assist� � une explosion de leur utilit� et � de nombreuses avanc�es algorithmiques, avanc�es qui n�cessitent un changement d'interface. En ajoutant des structures de donn�es de hachage plus modernes � la norme, nous pouvons am�liorer consid�rablement les performances et l'impact environnemental du code nouvellement �crit. Nos utilisateurs ont aussi d�sesp�r�ment besoin d'un moyen normalis� de combiner les hachages dans leurs propres fonctions de hachage.
- Analyse JSON. Une biblioth�que d'analyse JSON et de s�rialisation simple, ergonomique et normalis�e �vitera � de nombreux utilisateurs de rechercher des biblioth�ques ou, pire, d'�crire des formats personnalis�s. L'objectif n'est pas d'�tre l'analyseur JSON le plus rapide au monde.
- Analyse de la ligne de commande. Une biblioth�que simple et standardis�e pour l'analyse de la ligne de commande am�liorera �galement la vie des 99% d'utilisateurs en rempla�ant l'analyse argv[1] courante dans les petites applications.
Il y a beaucoup d'autres id�es comme celles-ci. L'objectif est de donner au plus grand nombre la r�action "ah, c'est bien".
Conclusion
Ce document plaide en faveur d'une mission de normalisation du C++ : am�liorer la vie des gens. Il a �galement identifi� les biais sociaux et techniques qui entravent cette mission. Enfin, il a pris en compte les principales discussions en cours au sein du WG21 et a sugg�r� des id�es pour les travaux futurs.
En fin de compte, lorsque je dis que "le C++ doit �tre le C++", je veux dire que le C++ est un langage utile pour la soci�t�. je veux dire que le C++ est un outil utile tel qu'il est - des changements radicaux ne sont pas utiles. Pour �viter qu'il ne devienne ce qu'il n'est pas, nous devons dire "non" plus souvent, reconna�tre nos pr�jug�s et, surtout, donner la priorit� � nos utilisateurs.
References
�2023 Developer Survey.� Stack Overflow, 2023, https://survey.stackoverflow.co/2023/.
Hinnant, Howard et al. �Direction for ISO C++.� 15 October 2022, https://wg21.link/P2000R4.
Stroustrup, Bjarne. �How can you be so certain?� 18 November 2019, https://wg21.link/P1962R0.
Stroustrup, Bjarne. �Remember the Vasa!� 6 March 2018, https://wg21.link/P0977R0.
Stroustrup, Bjarne. �Thriving in a Crowded and Changing World: C++ 2006-2020.� Proc. ACM Program. Lang., vol. 4, HOPL, June 2020, Article 70, pp. 1-167, https://doi.org/10.1145/3386320.
van Winkel, J.C. et al. �Operating principles for evolving C++� 31 Janurary 2017, https://wg21.link/P0559R0.
- Remember the Vasa! (P0977R0)
- The Stack Overflow 2023 survey had 89,184 respondents. 19,634 indicated they did "extensive development work" C++ over the past year and 4,269 claimed extensive development work in both Rust and C++ over the past year. Of those who used C++, 7,918 indicated a desire to work in Rust over the next year.
- Direction for ISO C++ (P2000R4)
- How can you be so certain (P1962R0)
- Operating principles for evolving C++ (P0559R0)
- ibid.
- Direction for ISO C++ (P2000R4)
- How can you be so certain (P1962R0)
- ibid.
- See Thriving in a Crowded and Changing World and Direction for ISO C++ (P2000R4)
- Thriving in a Crowded and Changing World
- https://en.wikipedia.org/wiki/Gartner_hype_cycle
- Direction for ISO C++ (P2000R4)
- Thriving in a Crowded and Changing World
- Direction for ISO C++ (P2000R4)
- Thriving in a Crowded and Changing World
- Direction for ISO C++ (P2000R4)
- ibid.
- Credit to Niall Douglas for this idea
- Direction for ISO C++ (P2000R4)
Source : "C++ Should Be C++" par David Sankel
Et vous ?
:fleche: Quel est votre avis sur le sujet ?
Voir aussi :
:fleche: La norme C++23 supprime la prise en charge du Garbage Collection par Sandor Dargo, d�veloppeur C++
:fleche: Livrer un C++ s�r, par Bjarne Stroustrup au CppCon 2023. Sa pr�sentation expose une approche bas�e sur les profils de s�curit� pour relever ces d�fis
:fleche: Bjarne Stroustrup, 72 ans, cr�ateur du langage C++, partage ses conseils de vie et a �galement racont� comment il est devenu programmeur par erreur