web-dev-qa-db-fra.com

Que signifie iota de std :: iota?

Je suppose que le "i" est une incrémentation et que le "a" est assigné, mais je ne pouvais pas trouver ou trouver la réponse. En outre, cela ressemble beaucoup à la variable itoa non standard qui, à mon avis, prête à confusion.

113
Jesse Good

À partir de la documentation SGI STL d'origine :

Le nom iota provient du langage de programmation APL.

Dans sa conférence Turing Award, Ken Iverson (inventeur de APL) a déclaré ceci:

Par exemple, la fonction integer notée par ι produit un vecteur du premier entier n lorsqu'il est appliqué à l'argument n,…

Ce ι 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, «SYMBOLE FONCTIONNEL APL» .


En réponse aux demandes des commentateurs, je traiterai plus avant de l’étymologie de «iota» dans ce contexte.

La réponse la plus probable est que Ken Iverson souhaitait un symbole rappelant à l'utilisateur le mot "entier" et l'utilisation de la lettre "i" en tant que variable entière typique, en particulier pour les indices de tableau.

Mais supposons qu'il y ait un sens plus profond.

Selon le dictionnaire anglais d'Oxford, “iota” est “Le nom de la lettre grecque, ι, correspondant à la lettre romaine I, i; la plus petite lettre de l'alphabet grec "(la plus petite physiquement, pas alphabétiquement, je présume), et signifie également" la plus petite ou une très petite particule ou quantité ". La première utilisation connue de cette signification par l'OED provient de Clavis mystica de Daniel Featley en 1636:

Allons-nous perdre, ou passer à toute vitesse, tout iota ou titre du Livre de Dieu?

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

 matthew 5:18

Transcription:

En vérité, je vous dis que jusqu'à ce qu'il soit passé et que la terre, une seule ou un titre, ne soit pas échappé de la loi, jusqu'à ce que tout soit accompli.

L'OED donne “iote” comme une autre forme de “jot”, qui (comme “iota”) provient du mot grec “ἰῶτα”, qui est le nom grec de la lettre en question. Pourquoi Featley a-t-il changé «iote» en «iota»? Malheureusement, je n'ai pas d'exemplaire de Clavis mystica dans ma bibliothèque personnelle, je ne peux donc pas approfondir cette question.

Dans l'original grec de Matthieu 5:18, «iote» est «τα» et «titre» (ou plus moderne, «légende») est «κεραία». Le mot «κεραία» signifiait grossièrement «serif» ou «apostrophe». Ce verset de la Bible fait donc référence à l'idée de les plus petits détails et utilise «τα» pour désigner la lettre iota dans son rôle de lettre la plus petite de l'alphabet grec.

Nous pouvons donc en déduire que la fonction STL iota et son antécédent APL sont nommés, par le biais de la Bible, d'après la plus petite lettre de l'alphabet grec "ι", car ces fonctions produisent des entiers séparés par le plus petit nombre possible. les nombres entiers peuvent être séparés.

Selon Wikipedia , 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.

156
rob mayoff

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

29
patthoyts

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

Pour répondre à votre question spécifique, cela ne signifie en réalité rien. Iota (prononcé "eye-oh-duh" en anglais) est une lettre grecque à connotation mathématique.

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

21
Drew Dormann

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 "attribuez i" à chaque élément du tableau, et iota est grec pour i, donc là.

(Je ne serais pas surpris que ce soit la raison du choix de l'APL, mentionnée dans le answer de @ robmayoff, bien que je ne sache pas si c'est le cas.)

3
einpoklum

L'utilisation de i pour un entier provient de FORTRAN IV. Toute variable commençant par les lettres i à n est implicitement unDANSteger au début de Fortran. Tous les autres sont réels nombres. Les variables peuvent être explicitement définies en tant que type numérique. 

Pas une réponse directe à OP mais à d’autres réponses et commentaires. 

0
rm1948