Depuis que je suis ni associé de près avec les créateurs de C et C++ dans les jours de leur création (même si je suis plutôt vieux), ni la partie de la norme ANSI/comités de l'ISO qui a établi les normes, ce n'est pas nécessairement l'opinion de ma part. J'aime à penser qu'il est informé de l'opinion, mais, comme ma femme va vous dire (fréquemment et sans beaucoup d'encouragements nécessaires), j'ai eu tort avant :-)
Supposition, pour ce qu'elle vaut, la façon suivante.
Je soupçonne que la raison de l'original (pré-ANSI) C n'ont pas cette fonctionnalité est parce que c'était totalement inutile. Il y avait déjà une très bonne façon de faire les puissances entières (avec des doubles et puis il suffit de le convertir en un nombre entier, vous donnant la possibilité de vérifier débordement d'entier et de dépassement de capacité avant la conversion).
L'autre chose que vous devez retenir, c'est que l'intention initiale de C, était un des systèmes de langage de programmation, et il est permis de se demander si à virgule flottante est souhaitable dans cette arène de toute façon. Depuis son premier cas d'utilisation était de code UNIX, la virgule flottante aurait été presque inutiles. BCPL, sur ce qui C est fondée, aussi n'avait pas l'utiliser pour des puissances (il n'a pas eu à virgule flottante à tous, à partir de la mémoire).
Comme une part intégrante de la puissance de l'opérateur aurait probablement été un opérateur binaire plutôt qu'un appel de la bibliothèque. Vous n'avez pas ajouter deux entiers avec x = add (y, z)
mais avec x = y + z
- une partie de la langue appropriée , plutôt que de la bibliothèque.
Depuis la mise en œuvre intégrale de la puissance est relativement simple, il est presque certain que les développeurs de la langue permettrait de mieux utiliser leur temps à fournir plus de choses utiles (voir ci-dessous les commentaires sur le coût d'opportunité).
C'est également pertinente pour le C++. Depuis la mise en œuvre originale a été effectivement juste un traducteur qui produit du code C, il a porté sur les nombreux attributs de C. Son but initial était un C-à-classes, pas du C avec des classes-plus-un-petit-peu-de-extra-mathématiques-stuff.
Pourquoi il n'a jamais été ajoutées aux normes, vous devez vous rappeler que les organismes de normalisation ont des lignes directrices à suivre. Par exemple, en C ANSI a été spécifiquement chargé de codifier la pratique actuelle, pas pour créer une nouvelle langue. Sinon, ils pourraient avoir de fou et nous a donné l'Ada :-)
Plus tard itérations de cette norme ont également des lignes directrices spécifiques et peuvent être trouvés dans les documents justificatifs (les raisons pour lesquelles le comité a formulé un certain nombre de décisions, pas de justification pour la langue elle-même).
Par exemple, le C99 justification document reprend les deux de la C89 principes directeurs qui limite ce qui peut être ajouté:
- Garder la langue de petite et simple.
- Fournir seulement une façon de faire une opération.
Lignes directrices (pas nécessairement celles spécifiques ) sont prévues pour les individuels, groupes de travail et donc de limiter le C++ comités (et tous les autres groupes ISO).
En outre, les organismes de normalisation réaliser qu'il y a un coût d'opportunité (économique, terme qui signifie que ce que vous avez à renoncer à une décision rendue) à chaque décision qu'ils prennent. Par exemple, le coût d'opportunité de l'achat de 10 000 dollars pour uber-machine de jeu est des relations cordiales (ou probablement toutes les relations) avec votre autre moitié, environ six mois.
Eric Gunnerson explique cette bien avec son -100 points d'explication quant à pourquoi les choses ne sont pas toujours ajoutée aux produits Microsoft - essentiellement une fonction commence 100 points dans le trou de sorte qu'il doit ajouter un peu de valeur pour être encore considéré.
En d'autres termes, vous avez plutôt une partie intégrante de la puissance de l'opérateur (ce qui, honnêtement, n'importe quel code de singe pourrait attiser en dix minutes) ou multi-threading ajoutées à la norme? Pour moi, je préfère avoir le dernier et pas bricolons avec les différences de mise en œuvre sous UNIX et Windows.
J'aimerais aussi voir des milliers et des milliers de collection de la bibliothèque standard (tables de hachage, les btrees, arbres rouge-noir, le dictionnaire, l'arbitraire des cartes et ainsi de suite), mais, comme la justification états:
Une norme est un traité entre l'analyste et programmeur.
Et le nombre de maîtres d'œuvre sur les corps de normes dépassent de loin le nombre de programmeurs (ou au moins les programmeurs qui ne comprennent pas le coût d'opportunité). Si tout ça a été ajoutée, la prochaine norme C++ serait C++215x et devrait être pleinement mis en œuvre par les développeurs de compilateurs de trois cents ans après que.
De toute façon, c'est mon (assez volumineux) réflexions sur la question. Si seuls les votes ont été remis bases sur la quantité plutôt que la qualité, je serais bientôt souffler tout le monde hors de l'eau. Merci pour l'écoute :-)