Cosa significa iota di std :: iota?


147

Suppongo che "i" sia incrementato e che "a" sia assegnato, ma non sono riuscito a capire o trovare la risposta. Inoltre, sembra molto simile al non standard itoache penso sia fonte di confusione.


11
Forse da APL? La lettera greca Iota è stata utilizzata per generare un vettore di numeri interi consecutivi.
cmbuckley,

3
Se ritieni che sia confuso, Google Go crea iotauna <s> parola chiave </s> appositamente dichiarata identificatore, il cui valore viene incrementato una volta per definizione, ma solo quando definisci le costanti.
Potatoswatter,

3
Concordato sulla itoaconfusione; Ho avuto lo stesso pensiero.
NHDaly,


1
Divertente, in qualche modo ho pensato che il nome derivasse dal prendere "atoi" all'indietro - una specie di inverso. Non ha davvero senso però.
Petter,

Risposte:


185

Dalla documentazione originale SGI STL :

Il nome iota è preso dal linguaggio di programmazione APL.

Nella sua conferenza del Turing Award, Ken Iverson (inventore di APL) ha dichiarato:

Ad esempio, la funzione intera indicata da ιproduce un vettore dei primi nnumeri interi applicato all'argomento n, ...

Questa ιè la lettera greca minuscola iota .

Nella citazione sopra, ho digitato ι, U + 03B9, "GREEK SMALL LETTER IOTA" , ma Unicode in realtà ha un punto di codice dedicato per la iota di APL: è U + 2373, "APL FUNCTIONAL SYMBOL IOTA" .


In risposta alle richieste dei commentatori, affronterò ulteriormente l'etimologia di "iota" in questo contesto.

La risposta più probabile è che Ken Iverson desiderasse un simbolo che ricordasse all'utente la parola "intero" e l'uso della lettera "i" come tipica variabile intera, specialmente per la sottoscrizione di array.

Supponiamo che esista un significato più profondo.

Secondo l'Oxford English Dictionary, "iota" è "Il nome della lettera greca Ι, ι, corrispondente alla romana I, i; la più piccola lettera dell'alfabeto greco ”(presumibilmente la più piccola fisicamente, non in ordine alfabetico), e significa anche“ La particella o quantità minima, o molto piccola ”. Il primo utilizzo noto da parte dell'OED di questo significato è tratto da Clavis mystica di Daniel Featley nel 1636:

Perderemo, o passeremo di soppiatto, qualche iota o un pizzico del Booke di Dio?

Clavis mystica è una guida a parti della Bibbia e questa frase si riferisce in particolare a Matteo 5:18. L'edizione 1611 della versione di King James ha questo testo per Matteo 5:18 :

Matteo 5:18

Trascrizione:

In verità vi dico vnto, fino a quando Heauen e Earth Passe, un iote o un titolo, non devono in alcun modo passeggiare dalla legge, fino a quando tutti non saranno adempiuti.

L'OED dà "iote" come un'altra forma di "jot", che (come "iota") discende dalla parola greca "ἰῶτα", che è il nome greco per la lettera in questione. Perché Featley ha cambiato "iote" in "iota"? Purtroppo, non ho una copia di Clavis mystica nella mia biblioteca personale, quindi non posso indagare ulteriormente.

Nel greco originale di Matteo 5:18, "iote" è "ἰῶτα" e "titolo" (o più modernamente, "piccolo") è "κεραία". La parola "κεραία" significava approssimativamente "serif" o "apostrofo". Quindi questo versetto della Bibbia si riferisce all'idea dei più piccoli dettagli , e usando "ἰῶτα" per riferirsi alla lettera iota nel suo ruolo di lettera fisicamente più piccola dell'alfabeto greco.

Quindi possiamo dedurre che la funzione STL iota, e il suo antecedente APL , prendono il nome, per mezzo della Bibbia, dalla lettera più piccola dell'alfabeto greco "ι", poiché queste funzioni producono numeri interi separati dalla quantità più piccola con cui i numeri interi possono essere separati.

Secondo Wikipedia , la lettera greca Iota proveniva dalla lettera fenicia yōdh.

Questo è il più lontano dalla programmazione come desidero attualmente fare questa domanda.


6
Allora perché hai introdotto il refuso? ;-)
subsub

5
Ma questo non fa che invertire la domanda: perché APL ha chiamato questa funzione ?
Daniel H,

1
Pensavo che APL usasse iota perché, almeno in inglese, significa approssimativamente la più piccola quantità misurabile (ad esempio, "Non mi interessa un iota ").
Adrian McCarthy,

Bel discorso! Permettetemi di commentare qui la vostra discussione su "iota" Vs "iote" Vs "jot". Nella lingua antica non c'era distinzione tra le lettere I e J. J non è in alfabeto greco e non era in romano, quindi sostanzialmente tutte e 3 le trascrizioni si riferivano alla stessa lettera. L'articolo del WP afferma che: "Il primo libro in lingua inglese per fare una chiara distinzione tra ⟨i⟩ e ⟨j⟩ è stato pubblicato nel 1633", 22 anni dopo il libro a cui ti riferisci.
Peter K,

29

È la lettera greca che a volte viene utilizzata in matematica per indicare gruppi di numeri o vettori di unità. Nel caso C ++, si ottiene un set vettoriale costruito. Niente a che fare con itoa.


23

std::iota riempirà un intervallo di iteratore con valori successivamente incrementati.

Per rispondere alla tua domanda specifica, in realtà non rappresenta nulla. Iota (pronunciato "eye-oh-duh" o "eye-oh-tuh" in inglese) è una lettera greca con connotazioni matematiche.

È standard in C ++ 11, ma non negli standard precedenti.


3
Molti oratori non inglesi e io non lo pronuncio "eye-oh-duh"
phuclv

eye-yacht-ah? Non mi interessa uno iota (lo faccio davvero) :)
Will il

5
@ LưuVĩnhPhúc Posso confermare che almeno un madrelingua inglese non lo pronuncia nemmeno "eye-oh-duh" - dico "eye-oh-tuh" (dove "uh" è la vocale indifferenziata "ə" nel mezzo di "matematica-matematica")
Martin Bonner sostiene Monica il

4

Oh, ho sempre avuto l'impressione che dal momento che std::iota(start,end,0)essenzialmente rappresenta

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

quindi essenzialmente "assegni i" a ciascun elemento dell'array e iota è greco per i, quindi lì.

(Non sarei sorpreso se questa fosse la logica della scelta APL, menzionata nella risposta di @ robmayoff , anche se non ho idea se sia così.)


1

Cito da questa pagina: iotashaming dove puoi trovare di più sull'argomento.

STL è stato fortemente influenzato dal lavoro di Ken Iverson su APL. Nella lezione del premio Ken's Turing del 1979 troverai questa frase:

"Ad esempio, la funzione intera indicata da ι produce un vettore dei primi numeri interi N."

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.