Подтвердить что ты не робот

Что означает iota std:: iota?

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

4b9b3361

Ответ 1

Из оригинальной документации SGI STL:

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

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

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

Это ι является строчной греческой буквой йота.

В приведенной выше цитате я набрал ι, U + 03B9, 'GREEK SMALL LETTER IOTA', но на самом деле в Unicode есть выделенная кодовая точка для APL йота: равен U + 2373, "ФУНКЦИОНАЛЬНЫЙ СИМВОЛ APL IOTA".


Отвечая на требования комментаторов, я дополнительно рассмотрю этимологию "йота" в этом контексте.

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

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

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

Должны ли мы потерять или ловко пройти мимо, ни йоты, ни капли из "Бук Бога"?

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

matthew 5:18

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

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

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

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

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

Согласно Википедии, греческое письмо йота пришло из финикийского письма йодх.

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

Ответ 2

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

Ответ 3

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

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

Он стандартный в С++ 11, но не в более ранних стандартах.

Ответ 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 answer, хотя я понятия не имею, имеет ли это дело. )

Ответ 5

Я цитирую с этой страницы: iotashaming, где вы можете найти больше на эту тему.

На STL большое влияние оказала работа Кена Айверсона над APL. В лекции Кенса Тьюринга от 1979 года вы найдете эту фразу:

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