Iota of std :: iota de quê?

146

Estou assumindo que o "i" é incrementado e o "a" é atribuído, mas não consegui descobrir ou encontrar a resposta. Além disso, parece muito semelhante ao não-padrão, o itoaque eu acho confuso.

Jesse Good
fonte
10
Possivelmente de APL? A letra grega Iota foi usada para gerar um vetor de números inteiros consecutivos.
cmbuckley
3
Se você acha confuso, o Google Go cria iotaum <s> keyword </s> identificador especialmente declarado, cujo valor é incrementado uma vez por definição, mas somente quando você define constantes.
Potatoswatter
3
Concordou com a itoaconfusão; Eu tive o mesmo pensamento.
NHDaly
1
Engraçado, de alguma forma, pensei que o nome era levar "atoi" para trás - meio que o inverso. Realmente não faz sentido.
Petter

Respostas:

184

Na documentação original da SGI STL :

O nome iota é obtido da linguagem de programação APL.

Em sua palestra no Prêmio Turing, Ken Iverson (inventor da APL) disse o seguinte:

Por exemplo, a função número inteiro denotada por ιproduz um vetor dos primeiros nnúmeros inteiros quando aplicado ao argumento n,…

Essa ιé a letra grega minúscula iota .

Na citação acima, eu digitei ι, U + 03B9 “grega pequena CARTA IOTA” , mas Unicode realmente tem um ponto de código dedicado para iota da APL: é U + 2373, “APL FUNCIONAL SÍMBOLO IOTA” .


Em resposta às demandas dos comentaristas, abordarei mais a etimologia da "iota" neste contexto.

A resposta mais provável é que Ken Iverson desejava um símbolo que lembrasse o usuário da palavra "número inteiro" e o uso da letra "i" como uma variável inteira típica, especialmente para a assinatura de array.

Mas vamos supor que haja um significado mais profundo.

De acordo com o Oxford English Dictionary, "iota" é "O nome da letra grega Ι, ι, correspondente ao romano I, i; a menor letra do alfabeto grego ”(presumo menor fisicamente, e não alfabeticamente, e também significa“ a menor, ou muito pequena partícula ou quantidade ”). O uso conhecido mais antigo desse significado pelo OED é de Clavis mystica por Daniel Featley em 1636:

Perderemos, ou passaremos com facilidade, qualquer pingo ou til do Livro de Deus?

Clavis mystica é um guia para partes da Bíblia, e esta frase se refere em particular a Mateus 5:18. A edição de 1611 da Versão King James tem este texto para Mateus 5:18 :

Mateus 5:18

Transcrição:

Pois em verdade vos digo que, até o céu e o passe da terra, um ou dois títulos, de modo algum passará da lei, até que tudo seja cumprido.

O OED fornece "iote" como outra forma de "jot", que (como "iota") descende da palavra grega "ἰῶτα", que é o nome grego da letra em questão. Por que Featley mudou "iote" para "iota"? Infelizmente, não tenho uma cópia do Clavis mystica na minha biblioteca pessoal, por isso não posso investigar mais.

No grego original de Mateus 5:18, "iote" é "ἰῶτα" e "title" (ou mais moderno, "tittle") é "κεραία". A palavra "κεραία" significava, grosso modo, "serifa" ou "apóstrofo". Portanto, este versículo da Bíblia está se referindo à idéia dos mínimos detalhes , e usando “ἰῶτα” para se referir à letra iota em seu papel de letra fisicamente menor do alfabeto grego.

Assim, podemos deduzir que a função STL iotae seu antecedente de APL são nomeados, por meio da Bíblia, como a letra fisicamente menor do alfabeto grego “ι”, porque essas funções produzem números inteiros separados pela menor quantidade pela qual os números inteiros podem ser separado.

Segundo a Wikipedia , a letra grega iota veio da letra fenícia yōdh.

Isso é tão longe da programação quanto eu atualmente desejo abordar esta questão.

Rob Mayoff
fonte
6
Então, por que você introduziu o erro de digitação? ;-)
subsub 14/05
5
Mas isso apenas empurra a pergunta de volta um pouco: por que a APL chamou essa função ?
Daniel H
1
Eu pensei que o APL usasse o iota porque, pelo menos em inglês, significa aproximadamente a menor quantidade mensurável (por exemplo, "eu não ligo para um iota ").
Adrian McCarthy
Discurso legal! Deixe-me comentar aqui sua discussão sobre "iota" Vs "iote" Vs "jot". Na língua antiga, não havia distinção entre as letras I e J. J não está no alfabeto grego e não estava em romano; portanto, basicamente todas as três transcrições se referiam à mesma letra. O artigo do WP afirma que: "O primeiro livro em inglês a fazer uma distinção clara entre ⟨i⟩ e ⟨j⟩ foi publicado em 1633", 22 anos depois do livro a que você se refere.
Peter K
29

É a letra grega que às vezes é usada em matemática para denotar conjuntos de números ou vetores de unidades. No caso de C ++, você obtém um conjunto de vetores construídos. Nada a ver com itoa.

patthoyts
fonte
23

std::iota preencherá um intervalo do iterador com valores incrementados sucessivamente.

Para responder sua pergunta específica, na verdade não significa nada. Iota (pronuncia-se "eye-oh-duh" ou "eye-oh-tuh" em inglês) é uma letra grega com conotações matemáticas.

É padrão no C ++ 11, mas não nos padrões anteriores.

Drew Dormann
fonte
3
A maioria dos falantes de inglês e eu não o pronunciamos "eye-oh-duh" #
phuclv 08/12/16
olho-iate-ah? Eu não me importo nem um pouco (eu faço realmente) :)
Will
5
@ LưuVĩnhPhúc Posso confirmar que pelo menos um falante nativo de inglês também não pronuncia "eye-oh-duh" - digo "eye-oh-tuh" (onde "uh" é a vogal indiferenciada 'ə' no meio de "math-ə-matical")
Martin Bonner apoia Monica
4

Oh, eu sempre tive a impressão de que, uma vez que std::iota(start,end,0)essencialmente significa

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

então você essencialmente "atribui i" a cada elemento da matriz, e iota é grego para i, então existe.

(Eu não ficaria surpreso se essa fosse a justificativa para a escolha da APL, mencionada na resposta de @ robmayoff , embora eu não tenha idéia se esse é o caso.)

einpoklum
fonte
1

Cito esta página: iotashaming, onde você pode encontrar mais sobre o assunto.

O STL foi bastante influenciado pelo trabalho de Ken Iverson no APL. Na palestra do prêmio Ken's Turing de 1979, você encontrará esta frase:

"Por exemplo, a função inteira indicada por ι produz um vetor dos primeiros N inteiros."

jimifiki
fonte