Що означає йота std :: iota?


146

Я припускаю, що "я" збільшується, а "а" призначається, але я не міг з'ясувати або знайти відповідь. Крім того, він дуже схожий на нестандартний, itoaякий я вважаю заплутаним.


10
Можливо, від APL? Грецька літера Йота була використана для генерування вектора послідовних цілих чисел.
cmbuckley

3
Якщо ви вважаєте, що це заплутано, Google Go робить iotaключове слово <s> </s> спеціально оголошеним ідентифікатором, значення якого збільшується один раз за визначенням, але лише тоді, коли ви визначаєте константи.
Potatoswatter

3
Домовилися про itoaплутанину; У мене була така ж думка.
NHDaly


1
Смішно, я якось подумав, що назва - від взяття "атоя" назад - свого роду зворотного. Це насправді не має сенсу.
Петтер

Відповіді:


184

З оригінальної документації SGI STL :

Назва йота взята з мови програмування APL.

У своїй лекції про премію Тьюрінга Кен Іверсон (винахідник APL) сказав про це:

Наприклад, ціла функція, позначена символом, ιстворює вектор перших nцілих чисел при застосуванні до аргументу n,…

Це ιє маленька грецька літера йота .

У наведеному вище цитаті, я надрукував ι, U + 03B9, «ГРЕЦЬКИЙ МАЛЕНЬКА БУКВА IOTA» , але на самому справі Unicode має спеціальну кодову точку для йота APL в: це U + 2373, «APL ФУНКЦІОНАЛЬНОГО SYMBOL IOTA» .


Відповідаючи на вимоги коментаторів, я далі звернуся до етимології "йоти" в цьому контексті.

Найімовірнішою відповіддю є те, що Кен Іверсон хотів символу, який нагадував би користувачеві слово "ціле число" та використання літери "i" як типової цілочисельної змінної, особливо для підписки на масив.

Але припустимо, що існує глибший сенс.

Відповідно до Оксфордського англійського словника, «йота» - це «назва грецької літери Ι, ι, що відповідає римській I, i; найменша літера грецького алфавіту ”(найменша фізично, не в алфавітному порядку, я припускаю), а також означає“ Найменша або дуже маленька частинка чи кількість ”. Найдавніше використання цього значення в OED - це « Clavis mystica» від Daniel Daniel Featley у 1636 році:

Невже ми втратимо чи пройдемо повз будь-яку йоту чи титлу Бука Божого?

Clavis mystica - це посібник з частин Біблії, і це речення, зокрема, стосується Матвія 5:18. У версії короля Джеймса 1611 року цей текст є для Матвія 5:18 :

Матвія 5:18

Транскрипція:

Бо по-справжньому кажу вам: Нехай не буде виконано закон і один італ або один титул, один йот чи один титул, поки всі не будуть виконані.

УЗД дає “йоту” як іншу форму “йоти”, яка (як іота) походить від грецького слова “ἰῶτα”, що є грецькою назвою для цієї букви. Чому Featley змінив "iote" на "iota"? На жаль, у мене немає копії Clavis mystica в моїй особистій бібліотеці, тому я не можу далі досліджувати це.

В оригінальній грецькій мові від Матвія 5:18 "йота" є "ἰῶτα", а "титул" (або, сучасніше, "титла") - "федерація". Слово "федерація" означало, приблизно, "серіф" або "апостроф". Отже, цей вірш з Біблії посилається на ідею найменших деталей , а "ἰῶτα" для позначення букви йоти у ролі фізично найменшої літери грецького алфавіту.

Таким чином, можна зробити висновок , що функція STL iota, і його APL попереднє , названі, за допомогою Біблії, після того, як фізично маленької літери грецького алфавіту « € г», так як ці функції роблять цілі числа , розділених найменшою кількістю , з допомогою якого цілі числа можуть бути відокремленими.

Згідно з Вікіпедією , грецька літера йота походить від фінікійської літери yōdh.

Це настільки далеко, наскільки я зараз хочу зайнятися цим питанням.


6
То чому ви ввели друкарську помилку? ;-)
підрозділ

5
Але це трохи відштовхує питання назад: чому APL викликав цю функцію ?
Даніель Н

1
Я подумав, що APL використовує йоту, оскільки, принаймні англійською мовою, це означає приблизно найменшу вимірювану кількість (наприклад, "Мені одна йота не хвилюється ").
Адріан Маккарті

Класний дискурс! Дозвольте мені прокоментувати тут ваше обговорення "iota" Vs "iote" Vs "jot". У стародавній мові не було розрізнення букв I і J. J немає в грецькому алфавіті і не було в римській, тому в основному всі 3 транскрипції відносяться до однієї і тієї ж літери. У статті WP зазначено, що: "Перша книга з англійської мови, яка чітко розмежувала між ⟨i⟩ та ⟨j⟩, була опублікована в 1633 році", що на 22 роки пізніше книги, про яку ви посилаєтесь.
Петро К

29

Це грецька літера, яка іноді використовується в математиці для позначення наборів чисел або одиничних векторів. У випадку C ++ ви отримуєте побудований векторний набір. Нічого спільного з ітоєю.


23

std::iota заповнить діапазон ітераторів послідовно нарощеними значеннями.

Щоб відповісти на ваше конкретне запитання, воно насправді нічого не означає. Йота (англійською мовою вимовляється «око-о-ду» або «око-о-ту») - грецька літера з математичними конотаціями.

Він є стандартним для C ++ 11, але не для більш ранніх стандартів.


3
Більшість носіїв англійської мови, і я не вимовляю це "
оче

око-яхта-а? Мені не байдуже одна йота (мені це справді) :)
Буде

5
@ LưuVĩnhPhúc Я можу підтвердити, що принаймні один з носіїв англійської мови не вимовляє це "око-о-ду", - я кажу "око-о-ту" (де "е-е" нерівномірна голосна "ə" посередині "math-ə-matical")
Мартін Боннер підтримує Моніку

4

О, я завжди був під таким враженням, що, std::iota(start,end,0)по суті, стоїть на увазі

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

то ви по суті "присвоюєте i" кожному елементу масиву, а iota є грецькою для i, тому є.

(Я не здивуюся , якщо це було обгрунтування вибору APL, згадані в @ robmayoff - х відповіді , хоча я й гадки не маю , що це справа.)


1

Я цитую з цієї сторінки: iotashaming, де ви можете дізнатися більше про цю тему.

STL був сильно вплинутий на роботу Кена Іверсона над APL. У лекції премії Кена Тьюрінга з 1979 року ви знайдете цю фразу:

"Наприклад, ціла функція, позначена ι, створює вектор з перших N цілих чисел."

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.