Что означает йота из std :: йота?


152

Я предполагаю, что «i» - это приращение, а «a» - это присваивание, но я не мог понять или найти ответ. Кроме того, он очень похож на нестандартный, itoaчто, на мой взгляд, сбивает с толку.


11
Возможно от APL? Греческая буква йота использовалась для создания вектора последовательных целых чисел.
cmbuckley

3
Если вы думаете, что это сбивает с толку, Google Go создает iotaспециально объявленный идентификатор <s> keyword </s>, значение которого увеличивается один раз для каждого определения, но только когда вы определяете константы.
Potatoswatter

3
Договорились о itoaнеразберихе; У меня была такая же мысль.
NHDaly


1
Забавно, я почему-то подумал, что это название произошло от слова «атой» наоборот - что-то вроде обратного. Хотя это не имеет смысла.
Петтер

Ответы:


191

Из исходной документации SGI STL :

Название iota взято из языка программирования APL.

В своей лекции по Премии Тьюринга Кен Айверсон (изобретатель APL) сказал следующее:

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

То ιесть прописная греческая буква йота .

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


В ответ на требования комментаторов я рассмотрю этимологию слова «йота» в этом контексте.

Наиболее вероятный ответ заключается в том, что Кен Айверсон хотел символ, который напоминал бы пользователю слово «целое число» и использование буквы «i» в качестве типичной целочисленной переменной, особенно для индексации массива.

Но предположим, что здесь есть более глубокий смысл.

Согласно Оксфордскому словарю английского языка, «йота» - это «название греческой буквы Ι, ι, соответствующей римскому I, i; наименьшая буква греческого алфавита »(наименьшая физически, а не в алфавитном порядке, как я полагаю), а также означает« наименьшую или очень маленькую частицу или количество ». Самое раннее известное использование этого значения в OED взято из Clavis mystica Дэниела Фитли в 1636 году:

Сможем ли мы потерять или ловко пройти мимо хоть на йоту или на строчку Книги Бога?

Clavis mystica - это путеводитель по частям Библии, и это предложение, в частности, относится к Матфея 5:18. В версии Короля Иакова от 1611 года есть этот текст от Матфея 5:18 :

Матфея 5:18

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

Ибо истинно говорю вам: пока не пройдут небо и земля, ни одна власть или один титул никоим образом не выйдет из закона, пока все не исполнятся.

OED дает «iote» как другую форму «йота», которая (как и «йота») происходит от греческого слова «ἰῶτα», которое является греческим названием рассматриваемой буквы. Почему Фитли изменил «iote» на «йота»? К сожалению, у меня нет копии Clavis mystica в моей личной библиотеке, поэтому я не могу исследовать это дальше.

В оригинальном греческом тексте Матфея 5:18 «iote» означает «ἰῶτα», а «титул» (или, в более современном смысле, «титул») - «κεραία». Слово «κεραία» примерно означало «засечки» или «апостроф». Итак, этот библейский стих обращается к идее мельчайших деталей и использует «ἰῶτα» для обозначения буквы йота в ее роли как физически наименьшей буквы греческого алфавита.

Таким образом, мы можем сделать вывод, что функция STL iotaи ее антецедент APL названы в Библии после физически наименьшей буквы греческого алфавита «ι», поскольку эти функции производят целые числа, разделенные наименьшим значением, на которое целые числа могут быть отделенным.

Согласно Википедии , греческая буква йота произошла от финикийской буквы йуд.

Это настолько далеко от программирования, насколько я хочу сейчас ответить на этот вопрос.


6
Так почему вы допустили опечатку? ;-)
subub

7
Но это лишь немного отодвигает вопрос: почему APL вызвал эту функцию ?
Daniel H

1
Я думал, что APL использует йоту, потому что, по крайней мере, на английском, это примерно означает наименьшее измеримое количество (например, «Меня не волнует ни одна йота »).
Адриан МакКарти,

Классный дискурс! Позвольте мне здесь прокомментировать ваше обсуждение "йота" против "йоте" против "йота". В древнем языке не было различия между буквами I и J. J не в греческом алфавите и не в римском, поэтому в основном все 3 транскрипции относились к одной и той же букве. В статье WP говорится: «Первая англоязычная книга, в которой проводится четкое различие между i⟩ и ⟨j⟩, была опубликована в 1633 году», что на 22 года позже, чем книга, на которую вы ссылаетесь.
Peter K

30

Это греческая буква, которая иногда используется в математике для обозначения наборов чисел или единичных векторов. В случае C ++ вы получаете сконструированный набор векторов. Ничего общего с итоа.


23

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

Чтобы ответить на ваш конкретный вопрос, это на самом деле ничего не означает. Йота (произносится как «ай-о-ду» или «ай-о-ту» на английском) - греческое письмо с математическим подтекстом.

Это стандарт в C ++ 11, но не в более ранних стандартах.


3
Большинство не говорящих по-английски, и я не произносю это «ай-о-
ду

глаз-яхта-а? Мне плевать ни на йоту (правда) :)
Will

5
@ LưuVĩnhPhúc Я могу подтвердить, что по крайней мере один носитель английского языка тоже не произносит это "eye-oh-duh" - я говорю "eye-oh-tuh" (где "uh" - это недифференцированная гласная 'ə' в середине «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.