Que signifie iota de std :: iota?

147

Je suppose que le «i» est un incrément et le «a» est assigné, mais je n'ai pas pu comprendre ou trouver la réponse. En outre, cela ressemble beaucoup à la non-standard, itoace qui, à mon avis, prête à confusion.

Jesse Good
la source
11
Peut-être de l'APL? La lettre grecque Iota a été utilisée pour générer un vecteur d'entiers consécutifs.
cmbuckley
3
Si vous pensez que c'est déroutant, Google Go crée iotaun <s> mot-clé </s> identifiant spécialement déclaré, dont la valeur est incrémentée une fois par définition, mais uniquement lorsque vous définissez des constantes.
Potatoswatter
3
Convenu de la itoaconfusion; J'ai eu la même pensée.
NHDaly
1
C'est drôle, j'ai pensé que le nom venait de prendre "atoi" à l'envers - une sorte d'inverse. Cela n'a pas vraiment de sens.
Petter

Réponses:

185

À partir de la documentation originale de SGI STL :

Le nom iota est tiré du langage de programmation APL.

Dans sa conférence du prix Turing, Ken Iverson (inventeur de l'APL) a déclaré ceci:

Par exemple, la fonction entière désignée par ιproduit un vecteur des premiers nentiers lorsqu'elle est appliquée à l'argument n,…

ιC'est la lettre grecque minuscule iota .

Dans la citation ci-dessus, j'ai tapé ι, U + 03B9, «GREEK SMALL LETTER IOTA» , mais Unicode a en fait un point de code dédié pour l'iota d'APL: est U + 2373, «APL FUNCTIONAL SYMBOL IOTA» .


En réponse aux demandes des commentateurs, j'aborderai plus avant l'étymologie de «iota» dans ce contexte.

La réponse la plus probable est que Ken Iverson voulait un symbole qui rappellerait à l'utilisateur le mot «entier» et l'utilisation de la lettre «i» comme variable d'entier typique, en particulier pour l'indexation des tableaux.

Mais supposons qu'il y ait une signification plus profonde.

Selon l'Oxford English Dictionary, «iota» est «Le nom de la lettre grecque Ι, ι, correspondant au roman I, i; la plus petite lettre de l'alphabet grec »(la plus petite physiquement, pas par ordre alphabétique, je présume), et signifie aussi« la moindre particule ou quantité ». La première utilisation connue de cette signification par l'OED est tirée de Clavis mystica de Daniel Featley en 1636:

Allons-nous perdre, ou passer à côté, un iota ou un titre du Livre de Dieu?

Clavis mystica est un guide de parties de la Bible, et cette phrase se réfère en particulier à Matthieu 5:18. L'édition 1611 de la version King James contient ce texte pour Matthieu 5:18 :

Matthieu 5:18

Transcription:

Car en vérité, je vous le dis, jusqu'à ce que le ciel et la terre passent, un iote ou un titre ne passera en aucun cas de la loi, jusqu'à ce que tout soit accompli.

L'OED donne «iote» comme une autre forme de «jot», qui (comme «iota») descend du mot grec «ἰῶτα», qui est le nom grec de la lettre en question. Pourquoi Featley a-t-il remplacé «iote» par «iota»? Malheureusement, je n'ai pas de copie de Clavis mystica dans ma bibliothèque personnelle, je ne peux donc pas enquêter davantage.

Dans le grec original de Matthieu 5:18, «iote» est «ἰῶτα», et «titre» (ou plus moderne, «tittle») est «κεραία». Le mot «κεραία» signifiait, en gros, «serif» ou «apostrophe». Donc ce verset de la Bible fait référence à l'idée des moindres détails et utilise «ἰῶτα» pour désigner la lettre iota dans son rôle de lettre physiquement la plus petite de l'alphabet grec.

Ainsi, nous pouvons en déduire que la fonction STL iota, et son antécédent APL , sont nommés, au moyen de la Bible, après la plus petite lettre physiquement de l'alphabet grec «ι», parce que ces fonctions produisent des entiers séparés par la plus petite quantité par laquelle les entiers peuvent être séparé.

Selon Wikipédia , la lettre grecque iota provenait de la lettre phénicienne yōdh.

C'est aussi loin de la programmation que je souhaite actuellement aller pour cette question.

Rob Mayoff
la source
6
Alors pourquoi avez-vous introduit la faute de frappe? ;-)
sous
5
Mais cela repousse un peu la question: pourquoi APL a-t-elle appelé cette fonction ?
Daniel H
1
Je pensais qu'APL utilisait iota parce que, au moins en anglais, cela signifie à peu près la plus petite quantité mesurable (par exemple, «je m'en fiche d'un iota »).
Adrian McCarthy
Discours cool! Permettez-moi de commenter ici votre discussion sur "iota" Vs "iote" Vs "jot". Dans la langue ancienne, il n'y avait pas de distinction entre les lettres I et J. J n'est pas en alphabet grec et n'était pas en romain, donc fondamentalement, les 3 transcriptions se référaient à la même lettre. L'article WP déclare que: «Le premier livre en anglais à faire une distinction claire entre ⟨i⟩ et ⟨j⟩ a été publié en 1633», soit 22 ans plus tard que le livre auquel vous faites référence.
Peter K
29

C'est la lettre grecque qui est parfois utilisée en mathématiques pour désigner des ensembles de nombres ou des vecteurs unitaires. Dans le cas C ++, vous obtenez un jeu de vecteurs construit. Rien à voir avec itoa.

patthoyts
la source
23

std::iota remplira une plage d'itérateur avec des valeurs incrémentées successivement.

Pour répondre à votre question spécifique, cela ne veut rien dire. Iota (prononcé "eye-oh-duh" ou "eye-oh-tuh" en anglais) est une lettre grecque avec des connotations mathématiques.

Il est standard dans C ++ 11, mais pas dans les normes antérieures.

Drew Dormann
la source
3
La plupart des non-anglophones et je ne le prononce pas "eye-oh-duh"
phuclv
oeil-yacht-ah? Je m'en fous un iota (je fais vraiment) :)
Will
5
@ LưuVĩnhPhúc Je peux confirmer qu'au moins un anglophone ne le prononce pas non plus "eye-oh-duh" - je dis "eye-oh-tuh" (où "uh" est la voyelle indifférenciée 'ə' au milieu de "math-ə-matical")
Martin Bonner soutient Monica
4

Oh, j'ai toujours eu l'impression que puisque std::iota(start,end,0)signifie essentiellement

for(size_t i = 0; i < std::distance(start, end) ; i++) { start[i] = i; }

alors vous "assignez i" essentiellement à chaque élément du tableau, et iota est grec pour i, donc là.

(Je ne serais pas surpris si c'était la justification du choix de l'APL, mentionnée dans la réponse de @ robmayoff , bien que je ne sache pas si c'est le cas.)

einpoklum
la source
1

Je cite à partir de cette page: iotashaming où vous pouvez en savoir plus sur le sujet.

La STL a été grandement influencée par le travail de Ken Iverson sur l'APL. Dans la conférence du prix Ken's Turing de 1979, vous trouverez cette phrase:

"Par exemple, la fonction entière désignée par ι produit un vecteur des N premiers entiers."

Jimifiki
la source