Что означает йота из std :: iota? - PullRequest
121 голосов
/ 12 февраля 2012

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

Ответы [ 4 ]

165 голосов
/ 12 февраля 2012

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

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

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

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

То, что ι - это строчная греческая буква йота .

В приведенной выше цитате я набрал ι, U + 03B9, «ГРЕЧЕСКОЕ МАЛЕНЬКОЕ ПИСЬМО 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 дает «iote» как другую форму «jot», которая (подобно «iota») происходит от греческого слова «ἰῶτα», которое является греческим названием для рассматриваемой буквы. Почему Фирли изменил «йоте» на «йоту»? К сожалению, у меня нет копии Clavis mystica в моей личной библиотеке, поэтому я не могу исследовать это дальше.

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

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

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

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

29 голосов
/ 12 февраля 2012

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

22 голосов
/ 12 февраля 2012

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

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

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

3 голосов
/ 25 апреля 2016

О, у меня всегда было впечатление, что, поскольку std::iota(start,end,0) по существу означает

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

тогда вы, по сути, «назначаете i» каждому элементу массива, и йота греческая для i, так что там.

(Я не удивлюсь, если это было обоснованием выбора APL, упомянутого в ответе * robmayoff , хотя я не знаю, так ли это).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...