Co oznacza iota z std :: iota?


146

Zakładam, że „i” jest przyrostem, a „a” jest przypisane, ale nie mogłem znaleźć odpowiedzi. Ponadto wygląda bardzo podobnie do niestandardowego, itoaco moim zdaniem jest mylące.


10
Prawdopodobnie z APL? Grecka litera Iota została użyta do wygenerowania wektora kolejnych liczb całkowitych.
cmbuckley,

3
Jeśli uważasz, że to mylące, Google Go tworzy iotaspecjalnie zadeklarowany identyfikator <s> słowo kluczowe </s>, którego wartość jest zwiększana raz na definicję, ale tylko wtedy, gdy definiujesz stałe.
Potatoswatter

3
Zgodził się na itoazamieszanie; Miałem tę samą myśl.
NHDaly


1
Zabawne, jakoś pomyślałem, że nazwa pochodzi od cofnięcia „atoi” - coś w rodzaju odwrotności. Nie ma to jednak sensu.
Petter

Odpowiedzi:


184

Z oryginalnej dokumentacji SGI STL :

Nazwa iota pochodzi z języka programowania APL.

W swoim wykładzie dotyczącym nagrody Turinga, Ken Iverson (wynalazca APL) powiedział:

Na przykład funkcja liczby całkowitej oznaczona przez ιdaje wektor pierwszych nliczb całkowitych po zastosowaniu do argumentu n

To ιjest mała grecka litera jota .

W powyższym cytatem, wpisałem ι, U + 03B9, „Greek mała litera IOTA” , ale Unicode faktycznie posiada dedykowany punkt kodu dla jota w APL: to U + 2373, „APL FUNKCJONALNA SYMBOL IOTA” .


W odpowiedzi na postulaty komentatorów zajmę się dalej etymologią „jota” w tym kontekście.

Najbardziej prawdopodobną odpowiedzią jest to, że Ken Iverson chciał mieć symbol, który przypominałby użytkownikowi słowo „integer” i użycie litery „i” jako typowej zmiennej całkowitej, zwłaszcza przy indeksowaniu tablic.

Ale przypuśćmy, że istnieje głębsze znaczenie.

Według Oxford English Dictionary, „iota” to „nazwa greckiej litery Ι, ι, odpowiadającej rzymskiemu I, i; najmniejsza litera alfabetu greckiego ”(najmniejsza fizycznie, a nie alfabetycznie, jak przypuszczam), a także oznacza„ najmniejszą lub bardzo małą cząstkę lub ilość ”. Najwcześniejsze znane użycie tego znaczenia w OED pochodzi od Clavis mystica przez Daniela Featleya w 1636 roku:

Czy stracimy lub podstępnie przejdziemy obok joty lub tytułu Księgi Boga?

Clavis mystica jest przewodnikiem po częściach Biblii, a to zdanie odnosi się w szczególności do Mateusza 5:18. Edycja King James Version z 1611 roku zawiera następujący tekst Mateusza 5:18 :

Mateusza 5:18

Transkrypcja:

Zaprawdę, powiadam wam: Dopóki niebo i ziemia nie przeminą, ani jeden jota, ani jeden tytuł, nie przejdą w żaden sposób od zakonu, aż wszystko się wypełni.

OED podaje „iote” jako inną formę „jot”, która (podobnie jak „iota”) wywodzi się od greckiego słowa „ἰῶτα”, które jest grecką nazwą danej litery. Dlaczego Featley zmienił „iote” na „iota”? Niestety, nie mam kopii Clavis mystica w mojej osobistej bibliotece, więc nie mogę dalej tego badać.

W oryginale greckim Mateusza 5:18 „iote” to „ἰῶτα”, a „tytuł” ​​(lub bardziej nowocześnie „tytuł”) to „κεραία”. Słowo „κεραία” oznaczało z grubsza „serif” lub „apostrof”. Tak więc ten werset biblijny odnosi się do pomysłu najdrobniejszych szczegółów i używa „ἰῶτα” w odniesieniu do litery jota w jej roli jako fizycznie najmniejszej litery alfabetu greckiego.

W ten sposób możemy wywnioskować, że funkcja STL iotai jej poprzednik APL są nazwane w Biblii po fizycznie najmniejszej literze greckiego alfabetu „ι”, ponieważ funkcje te tworzą liczby całkowite oddzielone najmniejszą liczbą, o jaką liczby całkowite mogą być w separacji.

Według Wikipedii grecka litera jota pochodzi od fenickiej litery yōdh.

To jest tak daleko od programowania, jak obecnie chciałbym zająć się tym pytaniem.


6
Dlaczego więc wprowadziłeś literówkę? ;-)
podsub

5
Ale to tylko trochę cofa pytanie: dlaczego APL wywołał tę funkcję ?
Daniel H

1
Myślałem, że APL użył jota, ponieważ przynajmniej w języku angielskim oznacza to mniej więcej najmniejszą mierzalną kwotę (np. „Nie obchodzi mnie jedna jota ”).
Adrian McCarthy

Fajna rozmowa! Pozwólcie, że skomentuję tutaj waszą dyskusję na temat "iota" Vs "iote" Vs "jot". W języku starożytnym nie było rozróżnienia między literami I i J. J nie występuje w alfabecie greckim i nie było alfabetu łacińskiego, więc w zasadzie wszystkie 3 transkrypcje odnosiły się do tej samej litery. Artykuł WP stwierdza, że: „Pierwsza książka w języku angielskim, w której dokonano wyraźnego rozróżnienia między ⟨i⟩ a ⟨j⟩, została opublikowana w 1633 r., Czyli 22 lata później niż książka, do której się odnosisz.
Peter K

29

Jest to grecka litera, która czasami jest używana w matematyce do oznaczania zbiorów liczb lub wektorów jednostkowych. W przypadku C ++ otrzymujesz skonstruowany zestaw wektorów. Nie ma to nic wspólnego z itoa.


23

std::iota wypełni zakres iteratora sukcesywnie zwiększanymi wartościami.

Odpowiadając na Twoje konkretne pytanie, to właściwie nic nie znaczy. Iota (wymawiane „eye-oh-duh” lub „eye-oh-tuh” w języku angielskim) to grecka litera o konotacjach matematycznych.

Jest to standard w C ++ 11, ale nie we wcześniejszych standardach.


3
Większość osób nie mówiących po angielsku i nie wymawiam tego „eye-oh-duh”
phuclv

oko-jacht-ah? Nie obchodzi mnie ani jedna jota (naprawdę) :)
Will

5
@ LưuVĩnhPhúc Mogę potwierdzić, że przynajmniej jeden native speaker angielski nie wymawia go „eye-oh-duh” - mówię „eye-oh-tuh” (gdzie „uh” to niezróżnicowana samogłoska „'” w środku) of "math-ə-matical")
Martin Bonner wspiera Monikę

4

Och, zawsze miałem wrażenie, że skoro std::iota(start,end,0)zasadniczo oznacza

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

wtedy zasadniczo „przypisujesz i” do każdego elementu tablicy, a iota jest greckie dla i, więc tak.

(I nie zdziwiłbym się, gdyby to było uzasadnienie wyboru APL, o których mowa w użytkownika @ robmayoff odpowiedź , choć nie mam pojęcia, czy to przypadek).


1

Cytuję z tej strony: iotashaming, gdzie można znaleźć więcej informacji na ten temat.

Na STL duży wpływ miała praca Kena Iversona nad APL. W wykładzie z nagrodą Kena Turinga z 1979 roku znajdziesz to zdanie:

„Na przykład funkcja liczb całkowitych oznaczona przez ι tworzy wektor pierwszych N liczb całkowitych”.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.