Кто-нибудь задумывался над тем, почему многие из нас повторяют один и тот же шаблон, используя одни и те же имена переменных?
for (int i = 0; i < foo; i++) {
// ...
}
Кажется , больше всего кода я когда - либо смотрел на использований i
, j
, k
и так далее , как итерационных переменных.
Я полагаю, что откуда-то взял это, но мне интересно, почему это так распространено в разработке программного обеспечения. Это что-то, что мы все взяли из C или что-то в этом роде?
Просто зуд у меня какое-то время в затылке.
ii
(иjj
,kk
...) , так что легче найти при поиске.Ответы:
i
иj
, как правило, довольно долго использовались в качестве подписчиков в математике (например, даже в статьях, предшествующих языкам более высокого уровня, вы часто видите такие вещи, как «X i, j », особенно в таких вещах, как суммирование).Когда они разработали Fortran, они (по-видимому) решили разрешить то же самое, поэтому все переменные, начинающиеся с «I» до «N», по умолчанию имеют целочисленные значения, а все остальные - вещественные (с плавающей запятой). Для тех, кто пропустил это, это источник старой шутки «Бог реален (если не объявлено целое число)».
Кажется, что большинство людей не видят оснований изменить это. Это широко известно и понятно, и довольно кратко. Время от времени вы видите что-то написанное психотиком, который думает, что есть реальное преимущество для чего-то вроде:
К счастью, это довольно редко, и большинство руководств по стилю теперь указывают, что хотя длинные описательные имена переменных могут быть полезны, они вам не всегда нужны, особенно для чего-то подобного, где область действия переменной - всего одна или две строки кода. ,
источник
i
- индекс.Временная переменная, используемая для индексации итерации цикла. Если у вас уже есть
i
, что более естественно , чем ходитьj
,k
и так далее?В этом контексте
idx
часто используется также.Коротко, просто и точно показывает, как используется переменная, как и должно быть имя переменной.
источник
i
для петель.i
может означать итератор.В Фортране
i
была первая буква по умолчанию для целочисленного типа. Полный диапазон неявных целочисленных типов были любые начинающимся с буквамиi
вn
. Работа с петлями для трех измерений у насi
,j
иk
. Картина продолжалась для дополнительных измерений. Аналогично, «x», «y» и «z», которые по умолчанию считаются числами с плавающей запятой и используются для переменных цикла, для которых требуются действительные числа.Как
litleadv
отмечается,i
это также минимальное сокращение индекса.Учитывая локальное использование этих переменных, я не вижу проблемы, не используя более описательное имя.
источник
Я полагаю, что это происходит от Суммирование :
источник
Пару лет назад, в дополнение к моему профессору теории вычислений, мне сказали, что источником является математическая суммация. i, j, k обычно использовались как целочисленные итерационные переменные, и они перенесены из ранних текстов по теории вычислений (что, конечно, в первую очередь является прикладной математикой). Видимо, глядя на работу Кнута и соавт. поддерживает это.
x, y, z как итераторы с плавающей точкой, очевидно, пришли с популярностью Fortran в физических науках, из-за того, что физики-исследователи конвертировали интегралы в исходный код (так как интеграции были обычно в пространственных границах ... как x идет до 100 и так далее)
У меня нет упоминания, подтверждающего это, но, как я уже сказал, оно пришло от довольно старого профессора и, похоже, имеет большой смысл.
Надеюсь это поможет
источник
Я думаю, что i, j, k используются в математике для указания индексов в суммах и для матричных элементов (i для строк и j для столбцов). В математической записи некоторые буквы, как правило, используются с определенным значением чаще, чем другие, например, a, b, c для констант, f, g, h для функций, x, y, z для переменных или координат, i, j, K для индексов. По крайней мере, это то, что я помню из математики, которую я взял в школе.
Возможно, это обозначение было перенесено в вычислительную технику, потому что вначале многие компьютерные ученые были математиками или, по крайней мере, имели сильный математический опыт.
источник
я == итератор или индекс
Я всегда понимал, что «я» - хороший выбор, поскольку циклы обычно предназначены для итерации или обхода с известным шагом индекса. Буквы «j» и «k» хорошо следуют, поскольку часто нужны вложенные циклы, и большинство из них инстинктивно будут знать «j» == второй индекс и «k» == третий индекс, поскольку они следуют этому шаблону в алфавите. Кроме того, поскольку многие придерживаются этого стандартного соглашения, можно с уверенностью предположить, что цикл 'k', скорее всего, будет иметь циклы 'j' и 'i', обертывающие его.
источник
i, j, k используются в декартовой системе координат. Сравнивая x и y, которые представляют оси в одной и той же системе и которые всегда используются в качестве переменных, мы можем сказать, что i, j и k также пришли оттуда.
источник
«я» для индекса.
Одна буква позволяет вашему глазу сканировать строку кода. Для чего-то общего, такого как цикл, идеальным является отдельный символ индекса. Нет никакой путаницы относительно того, что означает «я» в связи с соглашением.
источник
Когда я начал программировать, Dartmouth BASIC был новым. Все переменные в этом и некоторых других языках в то время были отдельными символами. Добавьте к этому соглашение о присвоении имен в FORTRAN и тот факт, что его гораздо проще печатать, только один символ, и понимание от старых программистов и учителей. Я не знаю, но это звучит хорошо.
источник