2012-02-11 16 views
92

Supongo que la "i" es un incremento y se asigna "a", pero no pude encontrar ni encontrar la respuesta. Además, se ve muy similar a la no estándar itoa que creo que es confusa.¿Qué significa iota of std :: iota?

+8

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

+3

Si cree que es confuso, Google Go convierte 'iota' en una palabra clave identificador especialmente declarado, cuyo valor se incrementa una vez por definición, pero solo cuando se definen constantes. – Potatoswatter

+3

Estamos de acuerdo con la confusión 'itoa'; Yo tuve el mismo pensamiento. – NHDaly

Respuesta

118

De the original SGI STL documentation:

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

In his Turing Award lecture, Ken Iverson (inventor of APL) said this:

Por ejemplo, el número entero función denotado por ι produce un vector de los primeros n números enteros cuando se aplica al argumento n, ...

Eso ι es the lower-case Greek letter iota .

En la cita anterior, escribí ι, U+03B9, “GREEK SMALL LETTER IOTA”, pero Unicode en realidad tiene un punto de código dedicado para ápice de APL: es U+2373, “APL FUNCTIONAL SYMBOL IOTA”.


En respuesta a las demandas de los comentaristas, voy a seguir haciendo frente a la etimología de “jota” es este contexto.

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

Pero supongamos que hay un significado más profundo.

De acuerdo con el Oxford English Dictionary, "iota" es "El nombre de la letra griega Ι, ι, que corresponde al romano 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 menos, o una partícula o cantidad muy pequeña ". el uso más antiguo conocido de la OED de este significado es de Clavis mystica por Daniel Featley en 1636:

Vamos a perder, o sleightly pasar, cualquier ápice ni una tilde de la Booke de Dios?

Clavis mystica es una guía para las partes de la Biblia, y esta frase es, en particular, en referencia a Mateo 5:18. The 1611 edition of the King James Version has this text for Matthew 5:18:

matthew 5:18

Transcripción:

Porque de cierto os digo á que mientras existan los cielos y la tierra passe, uno iote o un título, no será en ningún passe modo de la ley, hasta que todo se cumplido.

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

En el griego original de Mateo 5:18, "iote" es "ἰῶτα", y "título" (o más modernamente, "tilde") es "κεραία". La palabra "κεραία" significa, aproximadamente, "serif" o "apóstrofo". 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 la letra físicamente más pequeña del alfabeto griego.

Así, podemos deducir que la función STL iota, y su antecedente APL , se nombran, por medio de la Biblia, después de la letra físicamente más pequeña del alfabeto griego “ι”, debido a que estas funciones producen enteros separados por el la cantidad más pequeña por la cual los enteros pueden separarse.

According to Wikipedia, La letra griega iota proviene de la letra fenicia yōdh.

Esto es lo más lejano de la programación que deseo actualmente para esta pregunta.

+31

Unicode está loco. –

+6

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

+3

Pero esto solo hace que la pregunta retroceda un poco: ¿por qué APL llamó a esta función '⍳'? –

27

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

+2

+1 por mencionar la letra griega. –

20

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

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

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

+1

La mayoría de los que no hablan inglés y no lo pronuncio "ojo-oh-duh" –

+0

eye-yacht-ah?No me importa ni un ápice (lo hago realmente) :) – Will

+0

@ LưuVĩnhPhúc Puedo confirmar que al menos un hablante nativo de inglés no lo pronuncia "ojo-oh-duh" tampoco - digo "ojo-oh-tuh" (donde "uh" es la vocal no diferenciada 'ə' en el medio de "matemática-ə-matical") –

3

Oh, yo siempre estaba bajo la impresión de que ya std::iota(start,end,0) destaca esencialmente por

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

entonces esencialmente "asigna i" a cada elemento de la matriz, y el ápice es griego para i, por lo que hay.

(que no se sorprendería si esa fue la razón fundamental para la elección APL, mencionado en @ robmayoff de answer, aunque no tengo ni idea de si ese es el caso.)