Le comité C ++ teste-t-il leurs nouvelles spécifications de conception avec une sorte de compilateur prototype avant de publier une nouvelle norme? Ou libèrent-ils une norme qui, en fait, n'est que théorique jusqu'à ce que les grands compilateurs la mettent en œuvre?
c++
language-design
standards
Matthew James Briggs
la source
la source
boost::shared_ptr
=>std::shared_ptr
.boost.lambda
=> expressions lambda C ++ 11).Réponses:
Le C ++ Standard Committee a des statuts et des règles, mais la plupart d'entre eux sont centrés sur la structure de l'organisation, comment soumettre des propositions, voter, publier la norme, etc. et pas tant sur les détails techniques de la norme elle-même ou comment elle peut être testé.
Il n'y a aucune exigence formelle pour «tester» une fonctionnalité ou sa conception à ma connaissance. C ++ est également quelque peu unique en ce sens qu'il n'y a pas de référence ou d'implémentation "principale" (par exemple Microsoft CLR, Oracle JDK, Zend PHP). Cependant, les membres du comité sont composés de nombreuses organisations ayant une connaissance approfondie du langage et de l'implémentation du compilateur. Par exemple, si vous suivez ce lien précédent, vous verrez des représentants de Microsoft et Intel qui ont tous deux des compilateurs C ++ très respectés. Red Hat et quelques autres sociétés qui contribuent à GCC sont également impliquées.
Lorsqu'ils proposent une nouvelle fonctionnalité, les membres du comité ont déjà une assez bonne idée de savoir si elle est faisable, si elle peut entrer en conflit avec d'autres fonctionnalités, ou rendre la grammaire ambiguë d'une manière qui complique l'analyse inutilement. ( voici une bonne question sur la grammaire de C ++ )
La réponse courte est «non, le comité n'exige pas de tester leurs conceptions en utilisant le prototypage». Cependant, il n'y a pas grand-chose à faire car les membres du comité sont des experts en C ++ qui comprennent tous les petits détails à un niveau que la grande majorité des programmeurs ne comprend pas. N'oubliez pas que ces personnes sont des architectes de langage qui sont des experts en théorie des langages et en conception de compilateurs.
Compte tenu de l'implication des fournisseurs compilateur dans le processus, il est possible que l' un ou plusieurs d'entre eux peut prototyper une nouvelle fonctionnalité, mais encore une fois, il n'y a pas d' obligation formelle pour ce n'est - ce quelque chose que j'ai lu dans des documents accessibles au public de la Comité C ++.
Ils ont également tendance à être très conservateurs, ajoutant progressivement de nouvelles fonctionnalités qui ont une demande dans le monde réel sans spécifier de grandes quantités de nouvelles fonctionnalités qui peuvent s'avérer risquées. En fait, ces dernières années, ils ont ajouté de nouvelles fonctionnalités qui existaient sous la forme d'extensions propriétaires ou de bibliothèques open source qui fonctionnent déjà dans le monde réel. Par exemple, C ++ 11 et C ++ 14 intègrent des parties de Boost , qui a déjà été testé dans le monde réel dans plusieurs compilateurs et environnements d'exécution. Il n'est pas nécessaire de tester quelque chose qui est déjà testé.
la source