2009-07-18 9 views
4

Можно создать дубликат:
Why are we using i as a counter in loopsКто «изобрел» i, j, k как целые имена переменных счетчика?

Я использовал их себе на протяжении более 15 лет, но не могу вспомнить, как/где я взял эту привычку. Поскольку это действительно широко распространено, мне любопытно узнать, кто изначально предложил/рекомендовал использовать эти имена для целых счетчиков циклов (была ли это книга K & R?).

+0

Dupe: http://stackoverflow.com/questions/454303/why-are-we-using-i-as-a-counter-in-loops – oggy

+0

Я лично ненавижу это соглашение, в основном потому, что «i» и «j» настолько похожи в нижнем регистре. Раньше я возвращал их назад внутри вложенного цикла, и чертовски сложно определить проблему. – MusiGenesis

+0

i as in iterate, https://books.google.com/ngrams/graph?content=iterate – mbx

ответ

14

я = целое

Происходит из Fortran, где целочисленные переменные должны были начинаться с буквы I через N и реальные переменные началась с другими буквами. Таким образом, я был первым и самым коротким именем целочисленной переменной. Fortran был одним из самых ранних языков программирования в широком использовании, а привычки, разработанные программистами, использующими его, переносились на другие языки.

(От: Why are we using i as a counter in loops)

Очевидно, j и k являются только следующие из них в вашем любимом алфавите.

+0

Возможно, это было позднее добавление, но, по крайней мере, в FORTRAN-G, переменные, начинающиеся с IN, где INTEGER, если не указано иное. Было вполне законно говорить «REAL IVAR» или «INTEGER A». –

+1

Я думаю, что это правда, но немного назад. 'I'' J' и 'K' являются целыми числами в FORTRAN, потому что существует соглашение использовать эти буквы для индексных переменных, а не наоборот. Ранее существовавшая конвенция была из математики. –

+0

@JasonOrendorff: вы правы, см. Также http://stackoverflow.com/a/4137890/19254. – Reunanen

6

Математика :)

+0

Согласен. См. [Суммирование нотации] (https://en.wikipedia.org/wiki/Summation). Большинство примеров используют * i *, * j * и * k * как индексную переменную. В сноске говорится: «Хотя имя фиктивной переменной не имеет значения (по определению), обычно используются буквы из середины алфавита (* i * через * q *), чтобы обозначать целые числа, если есть риск путаницы «. У меня сложилось впечатление, что это очень давняя конвенция. –

+0

Использование «греческой буквы Σ для суммирования» [приписано Эйлеру] (https://en.wikipedia.org/wiki/Leonhard_Euler#Mathematics_notation), который умер в 1783 году; но он не говорит, какие буквы он обычно использовал для индексных переменных ... –

+0

Напротив, математик также использует «i» как мнимое числовое число – dns

3

Это общепринятое от школьного уровня и на уровень колледжа алгебры упражнений (хотя x и y были их часть, чтобы играть, там тоже :-)

Кроме того, если я помню правильно, ранние языки программирования (например, ранние версии FORTRAN) использовали переменное именование таким образом, чтобы начальные буквы были значительными, и это, возможно, сыграло определенную роль. Например, как this page говорит:

переменная А FORTRAN это способ со ссылкой на ячейку компьютера. Названия переменных должны соответствовать следующим правилам:

  1. Имя может быть от одного до шести символов.
  2. Первым символом должно быть письмо.
  3. Символы, отличные от первых, могут быть буквами или числовыми цифрами.
  4. Если первым символом является I, J, K, L, M или N, переменная является целым числом (т. Е. Может содержать целое числовое значение). В противном случае он является реальным (то есть может содержать значение в соответствии с плавающей точкой ).
4

FORTRAN. Если первым символом является I, J, K, L, M или N, переменная является целым числом (т. Е. Может содержать целое число). В противном случае это реально (т. Е. Может содержать значение в соответствии с соглашением о плавающей запятой).

1

Из википедии для Loop Counter

общий идентификатор именования для счетчика циклов, чтобы использовать имена переменных I, J и К (и так далее если это необходимо), где я бы самый внешний контур, j следующий внутренний контур, и т. д. Обратный порядок также используется некоторыми программистами. Этот стиль общепризнанна возникла с ранним программирования FORTRAN, , где эти имена переменных, начинающиеся с этими буквами были неявно объявлен как имеющий тип Integer, и так были очевидный выбор для цикла счетчиков, которые были только временно требуется . Практика также восходит далее к математической нотации, где индексы для сумм и умножения часто являются I, J и т.д.

3

Я всегда думал, что я обозначаю индекс, как используются, например, в суммах формул в математике.