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é):
De: Ken Thompson
Envoyé: jeudi 29 septembre 2016 04:50
À: Norbert Juffa
Objet: Objet: Justification du choix du curseur comme opérateur XOR en C?
c'était un choix aléatoire des caractères restants.
si je devais recommencer (ce que j'ai fait) j'utiliserais le même opérateur pour xor (^) et complément de bits (~).
puisque ^ est maintenant l'opérateur le plus connu, dans go, ^ est xor et également complémentaire.
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.