¿Qué significa iota of std :: iota?


146

Supongo que la "i" es incremental y la "a" es asignada, pero no pude averiguar o encontrar la respuesta. Además, se ve muy similar al no estándar, itoalo que creo que es confuso.


10
Posiblemente de APL? La letra griega Iota se utilizó para generar un vector de enteros consecutivos.
cmbuckley

3
Si cree que eso es confuso, Google Go crea iotaun <s> palabra clave </s> identificador especialmente declarado, cuyo valor se incrementa una vez por definición, pero solo cuando define constantes.
Potatoswatter

3
De acuerdo sobre la itoaconfusión; Tuve el mismo pensamiento.
NHDaly


1
Es curioso, de alguna manera pensé que el nombre era de tomar "atoi" al revés, algo así como lo contrario. Aunque realmente no tiene sentido.
Petter

Respuestas:


184

De la documentación original de SGI STL :

El nombre iota se toma del lenguaje de programación APL.

En su conferencia del Premio Turing, Ken Iverson (inventor de APL) dijo esto:

Por ejemplo, la función entera denotada por ιproduce un vector de los primeros nenteros cuando se aplica al argumento n, ...

Esa ιes la letra griega minúscula iota .

En la cita anterior, escribíι , U + 03B9, "IOTA DE LETRA PEQUEÑA GRIEGA" , pero Unicode en realidad tiene un punto de código dedicado para iota de APL: es U + 2373, "SÍMBOLO FUNCIONAL APL IOTA" .


En respuesta a las demandas de los comentaristas, abordaré la etimología de "iota" en este contexto.

La respuesta más probable es que Ken Iverson quería un símbolo que le recordara al usuario la palabra "entero" y el uso de la letra "i" como una variable entera típica, especialmente para la suscripción de matrices.

Pero supongamos que hay un significado más profundo.

De acuerdo con el Oxford English Dictionary, "iota" es "El nombre de la letra griega Ι, ι, correspondiente a la romana I, i; la letra más pequeña del alfabeto griego "(la más pequeña físicamente, no alfabéticamente, supongo), y también significa" la menor, o muy pequeña, partícula o cantidad ". El uso más antiguo conocido del OED de este significado es de Clavis mystica por Daniel Featley en 1636:

¿Perderemos, o pasaremos desapercibidamente, alguna pizca o título del Booke de Dios?

Clavis mystica es una guía de partes de la Biblia, y esta oración se refiere en particular a Mateo 5:18. La edición de 1611 de la versión King James tiene este texto para Mateo 5:18 :

Mateo 5:18

Transcripción:

Porque de cierto os digo que hasta el cielo y el paso de la tierra, un solo iote o un título, de ninguna manera pasarán de la ley, hasta que todo se cumpla.

El OED da "iote" como otra forma de "jot", que (como "iota") desciende de la palabra griega "ἰῶτα", que es el nombre griego para la letra en cuestión. ¿Por qué Featley cambió "iote" a "iota"? Lamentablemente, no tengo una copia de Clavis mystica en mi biblioteca personal, por lo que no puedo investigar más a fondo.

En el griego original de Mateo 5:18, "iote" es "ἰῶτα", y "título" (o más moderno, "título") es "κεραία". La palabra "κεραία" significaba, aproximadamente, "serif" o "apóstrofe". Entonces, este versículo de la Biblia se refiere a la idea de los detalles más pequeños , y usa "ἰῶτα" para referirse a la letra iota en su papel de letra físicamente más pequeña del alfabeto griego.

Por lo tanto, podemos deducir que la función STL iotay su antecedente APL se nombran, por medio de la Biblia, después de la letra físicamente más pequeña del alfabeto griego "ι", porque estas funciones producen enteros separados por la cantidad más pequeña por la cual los enteros pueden estar separado

Según Wikipedia , la letra griega iota proviene de la letra fenicia yōdh.

Esto está tan lejos de la programación como actualmente deseo ir para esta pregunta.


66
Entonces, ¿por qué introdujiste el error tipográfico? ;-)
subsub

55
Pero esto simplemente hace retroceder un poco la pregunta: ¿por qué APL llamó a esta función ?
Daniel H

1
Pensé que APL usaba iota porque, al menos en inglés, significa aproximadamente, la cantidad más pequeña que se puede medir (por ejemplo, "No me importa ni una pizca ").
Adrian McCarthy

¡Buen discurso! Permítanme comentar aquí sobre su discusión de "iota" Vs "iote" Vs "jot". En el idioma antiguo no había distinción entre las letras I y J. J no está en el alfabeto griego ni en el romano, por lo que básicamente las 3 transcripciones se refieren a la misma letra. El artículo de WP establece que: "El primer libro en inglés que hizo una distinción clara entre ⟨i⟩ y ⟨j⟩ fue publicado en 1633", que es 22 años más tarde que el libro al que se refiere.
Peter K

29

Es la letra griega que a veces se usa en matemáticas para denotar conjuntos de números o vectores unitarios. En el caso de C ++, obtienes un conjunto de vectores construido. Nada que ver con itoa.


23

std::iota llenará un rango de iterador con valores sucesivamente incrementados.

Para responder a su pregunta específica, en realidad no significa nada. Iota (pronunciado "eye-oh-duh" u "eye-oh-tuh" en inglés) es una letra griega con connotaciones matemáticas.

Es estándar en C ++ 11, pero no en estándares anteriores.


3
La mayoría de los que no hablan inglés y no lo pronuncio "eye-oh-duh"
phuclv

ojo-yate-ah? No me importa ni un ápice (de verdad) :)
Será el

55
@ LưuVĩnhPhúc Puedo confirmar que al menos un hablante nativo de inglés tampoco lo pronuncia "eye-oh-duh" - digo "eye-oh-tuh" (donde "uh" es la vocal indiferenciada 'ə' en el medio de "math-ə-matical")
Martin Bonner apoya a Monica el

4

Oh, siempre tuve la impresión de que std::iota(start,end,0)esencialmente significa

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

entonces esencialmente "asigna i" a cada elemento de la matriz, e iota es griego para i, así que allí.

(No me sorprendería si esa fuera la razón de la elección de APL, mencionada en la respuesta de @ robmayoff , aunque no tengo idea de si ese es el caso).


1

Cito de esta página: iotashaming donde puedes encontrar más sobre el tema.

STL fue muy influenciado por el trabajo de Ken Iverson en APL. En la conferencia de premios Ken's Turing de 1979, encontrará esta frase:

"Por ejemplo, la función entera denotada por ι produce un vector de los primeros N enteros".

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.