Wofür steht iota von std :: iota?

144

Ich gehe davon aus, dass das "i" inkrementiert und das "a" zugewiesen ist, aber ich konnte die Antwort nicht herausfinden oder finden. Außerdem sieht es dem Nicht-Standard sehr ähnlich, itoawas ich für verwirrend halte.

Jesse Gut
quelle
10
Möglicherweise von APL? Der griechische Buchstabe Iota wurde verwendet, um einen Vektor aufeinanderfolgender Ganzzahlen zu erzeugen.
cmbuckley
3
Wenn Sie der Meinung sind, dass dies verwirrend ist, erstellt Google Go iotaein speziell deklariertes <s> Schlüsselwort </ s>, dessen Wert einmal pro Definition erhöht wird, jedoch nur, wenn Sie Konstanten definieren.
Potatoswatter
3
Einverstanden über die itoaVerwirrung; Ich hatte den gleichen Gedanken.
NHDaly
1
Komisch, ich dachte irgendwie, der Name sei von "atoi" rückwärts genommen - irgendwie umgekehrt. Macht aber nicht wirklich Sinn.
Petter

Antworten:

184

Aus der Originaldokumentation von SGI STL :

Der Name iota stammt aus der Programmiersprache APL.

Ken Iverson (Erfinder von APL) sagte in seinem Vortrag zum Turing Award Folgendes:

Zum Beispiel ist die ganze Zahl bezeichnet Funktion ιerzeugt einen Vektor der ersten nganzen Zahlen , wenn das Argument angewendet n, ...

Das ιist der griechische Kleinbuchstabe iota .

Im obigen Zitat habe ich U + 03B9 "GREEK SMALL LETTER IOTA" eingegeben ι, aber Unicode hat tatsächlich einen dedizierten Codepunkt für APLs iota: ist U + 2373, "APL FUNCTIONAL SYMBOL IOTA" .


Als Antwort auf die Forderungen der Kommentatoren werde ich in diesem Zusammenhang weiter auf die Etymologie von „iota“ eingehen.

Die wahrscheinlichste Antwort ist, dass Ken Iverson ein Symbol wollte, das den Benutzer an das Wort „Ganzzahl“ und die Verwendung des Buchstabens „i“ als typische Ganzzahlvariable erinnert, insbesondere für Array-Subskriptionen.

Aber nehmen wir an, es gibt eine tiefere Bedeutung.

Nach dem Oxford English Dictionary ist „iota“ „der Name des griechischen Buchstabens Ι, ι, der dem römischen I, i entspricht; der kleinste Buchstabe des griechischen Alphabets “(ich nehme an, der kleinste physikalisch, nicht alphabetisch) und bedeutet auch„ das kleinste oder sehr kleine Teilchen oder die kleinste Menge “. Die früheste bekannte Verwendung dieser Bedeutung durch die OED stammt aus Clavis mystica von Daniel Featley aus dem Jahr 1636:

Sollen wir ein Jota oder ein Stückchen des Buches Gottes verlieren oder leichtfertig daran vorbeikommen?

Clavis mystica ist ein Leitfaden für Teile der Bibel, und dieser Satz bezieht sich insbesondere auf Matthäus 5,18. Die Ausgabe 1611 der King James Version enthält diesen Text für Matthäus 5:18 :

Matthew 5:18

Transkription:

Wahrlich, ich sage dir: Bis Heauen und Earth Passe, ein Iote oder ein Titel, werden in keiner Weise vom Gesetz verabschiedet, bis alle erfüllt sind.

Die OED gibt "iote" als eine andere Form von "jot" an, die (wie "iota") vom griechischen Wort "ἰῶτα" abstammt, das der griechische Name für den fraglichen Buchstaben ist. Warum hat Featley "iote" in "iota" geändert? Leider habe ich keine Kopie von Clavis mystica in meiner persönlichen Bibliothek, daher kann ich das nicht weiter untersuchen.

Im ursprünglichen Griechisch von Matthäus 5,18 ist „iote“ „ἰῶτα“ und „title“ (oder moderner „tittle“) „κεραία“. Das Wort "κεραία" bedeutete ungefähr "Serife" oder "Apostroph". Dieser Bibelvers bezieht sich also auf die Idee der kleinsten Details und verwendet „ἰῶτα“, um den Buchstaben iota in seiner Rolle als physikalisch kleinster Buchstabe des griechischen Alphabets zu bezeichnen.

Wir können daher schließen, dass die STL-Funktion iotaund ihr APL-Vorgänger in der Bibel nach dem physikalisch kleinsten Buchstaben des griechischen Alphabets „ι“ benannt sind, da diese Funktionen Ganzzahlen erzeugen, die durch den kleinsten Betrag getrennt sind, um den Ganzzahlen getrennt sein können getrennt sein.

Laut Wikipedia stammt der griechische Buchstabe iota aus dem phönizischen Buchstaben yōdh.

Dies ist so weit vom Programmieren entfernt, wie ich es derzeit für diese Frage möchte.

Rob Mayoff
quelle
6
Warum haben Sie den Tippfehler eingeführt? ;-)
Subsub
5
Dies wirft jedoch die Frage ein wenig zurück: Warum hat APL diese Funktion aufgerufen ?
Daniel H
1
Ich dachte, APL verwendet Jota, weil es zumindest auf Englisch ungefähr die kleinste messbare Menge bedeutet (z. B. "Es ist mir egal, ein Jota .").
Adrian McCarthy
Cooler Diskurs! Lassen Sie mich hier Ihre Diskussion über "iota" gegen "iote" gegen "jot" kommentieren. In der alten Sprache gab es keine Unterscheidung zwischen den Buchstaben I und J. J ist nicht im griechischen Alphabet und war nicht in römischer Sprache, so dass sich im Grunde alle 3 Transkriptionen auf denselben Buchstaben bezogen. In einem WP-Artikel heißt es: "Das erste englischsprachige Buch, das klar zwischen ⟨i⟩ und ⟨j⟩ unterscheidet, wurde 1633 veröffentlicht", 22 Jahre später als das Buch, auf das Sie sich beziehen.
Peter K
29

Es ist der griechische Buchstabe, der manchmal in der Mathematik verwendet wird, um Mengen von Zahlen oder Einheitsvektoren zu bezeichnen. Im C ++ - Fall erhalten Sie einen konstruierten Vektorsatz. Nichts mit itoa zu tun.

Patthoyts
quelle
23

std::iota füllt einen Iteratorbereich mit sukzessive inkrementierten Werten.

Um Ihre spezifische Frage zu beantworten, steht sie eigentlich für nichts. Iota (auf Englisch "eye-oh-duh" oder "eye-oh-tuh" ausgesprochen) ist ein griechischer Buchstabe mit mathematischen Konnotationen.

Es ist Standard in C ++ 11, aber nicht in früheren Standards.

Drew Dormann
quelle
3
Die meisten nicht englischsprachigen und ich
spreche
Auge-Yacht-ah? Es ist mir egal, ein Jota (das tue ich wirklich) :)
Will
5
@ LưuVĩnhPhúc Ich kann bestätigen, dass mindestens ein englischer Muttersprachler es auch nicht "eye-oh-duh" ausspricht - ich sage "eye-oh-tuh" (wobei "uh" der undifferenzierte Vokal "ə" in der Mitte ist von "math-ə-matical")
Martin Bonner unterstützt Monica
4

Oh, ich hatte immer den Eindruck, dass da im std::iota(start,end,0)Wesentlichen für steht

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

dann "weisen Sie im Wesentlichen jedem Array-Element i zu", und iota ist griechisch für i, also dort.

(Ich wäre nicht überrascht, wenn dies der Grund für die APL-Wahl wäre, die in der Antwort von @ robmayoff erwähnt wird , obwohl ich keine Ahnung habe, ob dies der Fall ist.)

einpoklum
quelle
1

Ich zitiere von dieser Seite: iotashaming, wo Sie mehr zu diesem Thema finden können.

STL wurde stark von Ken Iversons Arbeit an APL beeinflusst. In Ken's Turing Award Vortrag von 1979 finden Sie diesen Satz:

"Zum Beispiel erzeugt die mit ι bezeichnete Ganzzahlfunktion einen Vektor der ersten N Ganzzahlen."

jimifiki
quelle