Alguém já pensou por que tantos de nós repetimos esse mesmo padrão usando os mesmos nomes de variáveis?
for (int i = 0; i < foo; i++) {
// ...
}
Parece que a maioria do código que já olhou para os usos i
, j
, k
e assim por diante como variáveis de iteração.
Suponho que peguei isso em algum lugar, mas me pergunto por que isso é tão prevalente no desenvolvimento de software. É algo que todos nós aprendemos no C ou algo assim?
Apenas uma coceira que tive por um tempo na parte de trás da minha cabeça.
ii
(ejj
,kk
...) para facilitar a localização durante a pesquisa.Respostas:
i
ej
costumam ser usados como subscritos em um pouco de matemática há algum tempo (por exemplo, mesmo em trabalhos anteriores a linguagens de alto nível, você costuma ver coisas como "X i, j ", especialmente em coisas como um somatório).Quando eles projetaram o Fortran, eles (aparentemente) decidiram permitir o mesmo; portanto, todas as variáveis que começam com "I" a "N" são padronizadas para inteiro e todas as outras reais (ponto flutuante). Para quem perdeu, esta é a fonte da velha piada "Deus é real (a menos que seja declarado inteiro)".
A maioria das pessoas parece ter visto poucas razões para mudar isso. É amplamente conhecido e compreendido, e bastante sucinto. De vez em quando você vê algo escrito por algum psicótico que acha que há uma vantagem real em algo como:
Felizmente, isso é bem raro, e a maioria dos guias de estilo agora indica que, embora nomes extensos e descritivos de variáveis possam ser úteis, você nem sempre precisa deles, especialmente para algo assim, onde o escopo da variável é apenas uma ou duas linhas de código .
fonte
i
- índice.Uma variável temporária usada para indexar a iteração do loop. Se você já tem um
i
, o que é mais natural do que ir aj
,k
e assim por diante?Nesse contexto,
idx
é frequentemente usado também.Curto, simples e mostra exatamente qual é o uso da variável, como deveria ser o nome da variável.
fonte
i
para loops.i
poderia significar iterador.Em FORTRAN,
i
foi a primeira letra padrão para o tipo inteiro. A gama completa de tipos inteiros implícitos começava com as letrasi
den
. Trabalhando com loops para três dimensões nos levoui
,j
ek
. O padrão continuou para dimensões adicionais. Da mesma forma, 'x', 'y' e 'z', que padronizaram como ponto flutuante, foram usados para variáveis de loop que exigiam números reais.Como
litleadv
observa,i
também é uma contração mínima para o índice.Dado o uso local dessas variáveis, não vejo problema em não usar um nome mais descritivo.
fonte
Eu acredito que vem da Somatória :
fonte
Foi-me dito, em parte pelo meu professor de teoria da computação, alguns anos atrás, que a origem era da notação matemática de somatório. i, j, k foram comumente usados como variáveis de iteração de número inteiro, e foram transferidos dos textos iniciais sobre a teoria da computação (que, é claro, é principalmente a matemática aplicada). Aparentemente, olhando para o trabalho de Knuth et al. confirma isso.
x, y, z como iterantes de ponto flutuante aparentemente surgiram com a popularidade do Fortran nas ciências físicas, de pesquisadores de física convertendo integrais em código-fonte (uma vez que as integrações geralmente eram feitas por limites espaciais ... como x vai para 100 e mais)
Eu não tenho uma referência para apoiar isso, mas como eu digo, veio de um professor bastante antigo e parece fazer muito sentido.
Espero que isto ajude
fonte
Eu acho que i, j, k são usados em matemática para indicar índices em somas e para elementos de matriz (i para as linhas ej para as colunas). Na notação matemática, algumas letras tendem a ser usadas com um significado específico com mais freqüência do que outras, por exemplo, a, b, c para constantes, f, g, h para funções, x, y, z para variáveis ou coordenadas, i, j, k para índices. Pelo menos é o que me lembro da matemática que tirei na escola.
Talvez essa notação tenha sido transferida para a computação, porque no começo muitos cientistas da computação eram matemáticos ou, pelo menos, possuíam uma sólida formação matemática.
fonte
i == iterador ou índice
Meu entendimento sempre foi 'i' é uma boa opção, já que os loops geralmente são para iterar ou percorrer uma etapa de índice conhecida. As letras 'j' e 'k' seguem bem, uma vez que são frequentemente necessários loops aninhados e a maioria saberá instintivamente 'j' == segundo índice e 'k' == terceiro índice, uma vez que seguem esse padrão no alfabeto. Além disso, com muitos seguindo esta convenção padrão, pode-se assumir com segurança que um loop 'k' provavelmente terá um loop 'j' e 'i' envolvendo-o.
fonte
i, j, k são usados no sistema de coordenadas cartesianas. Comparando com xey que representam eixos no mesmo sistema e que são sempre usados como variáveis, podemos dizer que i, j e k também vieram daí.
fonte
"i" é para índice.
Uma única letra facilita a leitura dos seus olhos pela linha de código. Para algo tão comum quanto o loop, um único caractere para o índice é ideal. Não há confusão quanto ao que "i" significa devido à convenção.
fonte
Quando comecei a programar, o Dartmouth BASIC era novo. Todas as variáveis neste e em alguns outros idiomas da época eram caracteres únicos. Acrescente a isso a convenção de nomenclatura de variáveis FORTRAN e o fato de ser muito mais fácil digitar, apenas um caractere, e a compreensão de programadores e professores mais antigos. Eu não sei, mas parece bom.
fonte