Ce n'est pas vraiment un problème pour quiconque a déjà fait face à ce problème syntaxique, mais je vois une énorme confusion dériver de l'utilisation de caret ( ^
) comme opération XOR au lieu de l'opération d'exponentiation mathématique largement acceptée.
Bien sûr, il y a beaucoup d'endroits où la (mauvaise) utilisation du curseur est expliquée et corrigée, mais je n'ai trouvé aucune source définitive pour expliquer pourquoi le curseur a reçu une signification différente.
Était-ce une question de commodité? Un accident? De toute évidence, le raisonnement pourrait être différent pour les différentes langues, de sorte que les informations à tous égards seraient pertinentes.
Réponses:
Bien qu'il y ait des précurseurs plus anciens, le mathématicien français influent René Descartes est généralement reconnu pour avoir introduit des exposants exposants (a b ) dans l'écriture mathématique, dans son travail Geometrie qui a été publié en 1637. C'est la notation encore universellement utilisée en mathématiques aujourd'hui.
Fortran est le plus ancien langage de programmation largement utilisé pour les calculs numériques qui fournit un opérateur d'exponentiation, il date de 1954. L'opération d'exponentiation est indiquée par un double astérisque
**
. Il convient de noter que de nombreux ordinateurs à l'époque utilisaient des codages de caractères 6 bits qui ne fournissaient pas de caractère caret^
. L'utilisation de**
a ensuite été adoptée par les créateurs de divers langages de programmation plus récents qui offrent une opération d'exponentiation, comme Python.Le premier jeu de caractères largement adopté qui contenait le curseur
^
était le codage ASCII 7 bits qui a été normalisé pour la première fois en 1963. Le langage de programmation le plus ancien que je connaisse qui utilisait le curseur pour désigner l'exponentiation est BASIC, qui date de 1964. Autour de la même IBM a adopté le codage de caractères EBCDIC , qui inclut également le signe d'insertion^
.Le langage C a vu le jour en 1972. Il ne fournit pas d'opérateur d'exponentiation, il prend plutôt en charge l'exponentiation via des fonctions de bibliothèque telles que
pow()
. Par conséquent, aucun symbole ne doit être mis de côté pour l'exponentiation en C et dans d'autres langages de la famille C, tels que C ++ et CUDA.D'un autre côté, et peu courant pour les langages de programmation jusque-là, C fournit des symboles pour les opérations au niveau du bit. Le nombre de caractères spéciaux disponibles en ASCII 7 bits était limité, et comme il y avait une "affinité naturelle" d'autres opérations avec certains caractères spéciaux, par exemple
&
pour ET et~
pour NON, il n'y avait pas beaucoup de choix pour le symbole pour XOR .Je ne suis pas au courant d'une justification publiée fournie par Ritchie ou Kernighan pour expliquer pourquoi ils ont choisi
^
de désigner XOR spécifiquement; La courte histoire de C de Ritchie est muette sur cette question. Un regard sur la spécification du précurseur C, la langue B , révèle qu'il n'a pas un opérateur XOR, mais déjà utilisé tous les caractères spéciaux autres que^
,$
,@
,#
.[Mise à jour] J'ai envoyé un e-mail à Ken Thompson, créateur de B et l'un des co-créateurs de C, me renseignant sur la raison du choix
^
de l'opérateur XOR de C et demandant la permission de partager la réponse ici. Sa réponse (légèrement reformatée pour plus de lisibilité):L'utilisation de l'
^
exponentiation en "mathématiques" à laquelle vous vous référez est en fait une utilisation établie à une date beaucoup plus tardive pour les systèmes de composition tels que Knuth's TeX qui date de 1978, les interfaces de ligne de commande pour les systèmes d'algèbre tels que Mathematica qui date de 1988 et la représentation graphique. calculatrices au début des années 90.Pourquoi ces produits ont-ils adopté l'utilisation de l'
^
exponentiation? Dans le cas des calculatrices, je soupçonne l'influence de BASIC. Tout au long des années 80, il a été un premier langage de programmation très populaire et a également été intégré à d'autres produits logiciels. La notation aurait donc été familière à de nombreux acheteurs de calculatrices. Ma mémoire est vague, mais je pense qu'il y avait même des calculatrices qui exécutaient en fait de simples interprètes BASIC.la source
^
pour l' exposant . Et il est logique pour moi d'utiliser un caractère "haut" pour l'exposant et un caractère "bas" (_
) pour l'indice.^
suggère une flèche vers le haut, qui à son tour fait allusion à la position traditionnelle d'un exposant en exposant, c'est donc un peu un ajustement naturel. Je suis sûr que Donald Knuth répondrait à un e-mail demandant sa décision d'utiliser^
pour l'exponentiation dans TeX, mais étant donné qu'il est occupé à travailler sur des choses plus importantes, telles que l'achèvement du TAOCP, je ne voulais pas prendre cette mesure (j'ai envisagé il).