Eu sei que isso pode parecer uma pergunta absolutamente boba, mas estou curiosa demais para não perguntar ...
Por que "i" e "j" se tornaram AS variáveis a serem usadas como contadores na maioria das estruturas de controle?
Embora o senso comum me diga que eles são exatamente como X, que é usado para representar valores desconhecidos, não posso deixar de pensar que deve haver uma razão pela qual todos são ensinados da mesma maneira repetidamente.
É porque é realmente recomendado para práticas recomendadas, ou uma convenção, ou tem alguma razão obscura por trás disso?
Por precaução, sei que posso dar a eles o nome que quiser e que os nomes das variáveis não são relevantes.
variables
language-agnostic
Carlos
fonte
fonte
Respostas:
Em última análise, vem da matemática: a notação de soma tradicionalmente usa i para o primeiro índice, j para o segundo e assim por diante. Exemplo (de http://en.wikipedia.org/wiki/Summation ):
Também é usado dessa maneira para coleções de coisas, como se você tiver várias variáveis x 1 , x 2 , ... x n , uma arbitrária será conhecida como x i .
Por que é assim, imagino que o SLaks esteja correto e porque eu sou a primeira letra do Index.
fonte
i
usado em matemática?Eu acredito que remonta a Fortran. As variáveis que começam com I a Q eram inteiras por padrão, as outras eram reais. Isso significava que
I
era a primeira variável inteira eJ
a segunda, etc., então elas caíram no uso de loops.fonte
I
porN
nãoQ
. O Google parece concordar principalmente. (versões diferentes do Fortran?)Os matemáticos estavam usando i, j, k para designar números inteiros em álgebra (subscritos, séries, somas etc.) muito antes (por exemplo, 1836 ou 1816 ) de computadores (por exemplo, 1836 ou 1816 ) (esta é a origem dos padrões do tipo variável FORTRAN). O hábito de usar letras do final do alfabeto (..., x, y, z) para variáveis desconhecidas e do começo (a, b, c ...) para constantes é geralmente atribuído a René Descartes (consulte também aqui ), então suponho que i, j, k ... n (no meio do alfabeto) para números inteiros provavelmente seja devido a ele também.
fonte
i = inteiro
Vem de Fortran, onde variáveis inteiras tiveram que começar com as letras I a N e variáveis reais começaram com as outras letras. Portanto, eu era o primeiro e menor nome da variável inteira. O Fortran foi uma das linguagens de programação mais antigas em uso generalizado e os hábitos desenvolvidos pelos programadores que o utilizavam foram transferidos para outras linguagens.
Edição : Eu não tenho nenhum problema com a resposta que deriva da matemática. Sem dúvida, foi aí que os designers do Fortran se inspiraram. O fato é que, para mim, quando comecei a programar no Fortran, usamos I, J, K, ... para contadores de loop porque eram curtos e os primeiros nomes de variáveis permitidos legalmente para números inteiros. No segundo ano do ensino médio, provavelmente já tinha ouvido falar de Descartes (e muito poucos outros), mas fiz muito pouca conexão com a matemática ao programar. De fato, o primeiro curso que fiz foi chamado "Fortran for Business" e foi ministrado não pela faculdade de matemática, mas pela faculdade de economia / negócios.
Para mim, pelo menos, o nome das variáveis tinha pouco a ver com a matemática, mas tudo devido aos hábitos que aprendi escrevendo código Fortran que carregava em outras línguas.
fonte
i
significa I ndex.j
vem depoisi
.fonte
Esses símbolos foram usados como índices matriciais em matemática muito antes da invenção dos computadores eletrônicos.
fonte
Eu acho que é provavelmente derivado do índice (no sentido matemático ) - é usado geralmente como um índice em somas ou outras operações baseadas em conjuntos, e provavelmente já foi usado dessa maneira desde antes de haver linguagens de programação.
fonte
Y = Σ Xi
precede toda linguagem de programação.i
. Mas originalmente eu usá-lo, principalmente porque todos olhar código que em outro lugar usá-lo, e que pode ser herdada de programadores Fortran ...Existe uma preferência em matemática pelo uso de letras consecutivas no alfabeto para variáveis "anônimas" usadas de maneira semelhante. Portanto, não apenas "i, j, k", mas também "f, g, h", "p, q, r", "x, y, z" (raramente com "u, v, w" anexado), e "α, β, γ".
Agora "f, g, h" e "x, y, z" não são usados livremente: o primeiro é para funções, o último para dimensões. "p, q, r" também são frequentemente usados para funções.
Existem outras restrições nas seqüências disponíveis: "l" e "o" são evitadas, porque se parecem muito com "1" e "0" em muitas fontes. "t" é frequentemente usado para o tempo, "d & δ" para diferenciais e "a, s, m, v" para as medidas físicas de aceleração, deslocamento, massa e velocidade. Isso deixa poucas lacunas de três letras consecutivas sem associações indesejadas em matemática para índices.
Então, como vários outros notaram, as convenções da matemática tiveram uma forte influência nas convenções de programação iniciais, e "α, β, γ" não estavam disponíveis em muitos conjuntos de caracteres iniciais.
fonte
a, b, c
é uma sequência bastante comumente usado, apesar dea
ter vários significados ...Encontrei outra resposta possível: i, j e k vêm
Hamilton's Quaternions
.Euler escolheu i para a unidade imaginária.
Hamilton precisava de mais duas raízes quadradas de -1:
ii = jj = kk = ijk = -1
Hamilton era realmente influente, e os quaternions eram a maneira padrão de fazer a análise 3D antes de 1900. Até então, os matemáticos estavam acostumados a pensar em (ijk) como um conjunto correspondente. O cálculo vetorial substituiu a análise quaterniônica na década de 1890, porque era a melhor maneira de escrever as equações de Maxwell. Mas as pessoas tendiam a escrever quantidades vetoriais assim: em
(3i-2j+k)
vez de(3,-2,1)
. Então (ijk) se tornou o vetor base padrão em R ^ 3.Finalmente, os físicos começaram a usar a teoria dos grupos para descrever simetrias em sistemas de equações diferenciais. Então (ijk) começou a conotar "vetores que são trocados por grupos de permutação", depois se direcionou para "coisas semelhantes a índices que assumem todos os valores possíveis em algum conjunto especificado", que é basicamente o que elas significam em um loop for.
fonte
descartando (um pouco tendencioso)
fonte
number
, geralmente o número de elementos em um conjunto.Numa tarde ensolarada, Arquimedes ponderou ( como era habitual nas tardes ensolaradas ) e encontrou seu amigo Eratóstenes.
Arquimedes disse: "Saudação de Arquimedes a Eratóstenes! Estou tentando encontrar uma solução para a proporção de vários corpos rígidos esféricos em equilíbrio. Desejo percorrer esses corpos várias vezes, mas estou tendo um tempo assustador para acompanhar de quantas iterações eu fiz! "
Eratóstenes disse: "Por que Arquimedes, sua ameixa madura, você pode simplesmente marcar sucessivas linhas de linhas na areia, cada uma acompanhando o número de iterações que você fez na iteração!"
Arquimedes gritou ao mundo que seu grande amigo era inegavelmente um farol brilhante de inteligência por ter encontrado uma solução tão simples. Arquimedes, porém, observou que ele gosta de andar em círculos em torno de seu poço de areia enquanto ele pondera. Assim, havia o risco de perder a noção de qual linha estava no topo e qual estava no fundo.
"Talvez eu deva marcar essas linhas com uma letra do alfabeto logo ao lado, para que eu sempre saiba qual linha é qual! O que você acha disso?" ele perguntou e acrescentou: "Mas Eratóstenes ... que letras devo usar?"
Eratóstenes tinha certeza de que não sabia quais letras seriam melhores e disse o mesmo a Arquimedes. Arquimedes, porém, estava insatisfeito e continuou incitando o pobre bibliotecário a escolher, pelo menos, as duas letras que ele exigiria para sua atual solução de equilíbrio de esferas.
Eratóstenes, finalmente cansado do pedido incessante de duas cartas, gritou: "EU NÃO SEI !!!"
Assim, Arquimedes escolheu as duas primeiras letras da sentença exclamadora de Eratóstenes e agradeceu ao amigo pela contribuição.
Esses símbolos foram rapidamente adotados pelos desenvolvedores de Java da Grécia antiga, e o resto é, bem ... história.
fonte
j
.Eu acho que é porque muitos loops usam uma variável do tipo Int para fazer a contagem, como
e quando você digita, na verdade fala na sua cabeça (como quando lê), então na sua mente você diz 'int ....'
e quando você precisa criar uma carta logo após esse 'int ....', você diz / digita o 'i' porque é a primeira letra em que você pensa quando acaba de dizer 'int'
como você escreve uma palavra para crianças que começam a aprender a ler, você escreve palavras para elas usando nomes, assim:
PALAVRA soletra William W, Ok O, Ruby R, Feito D
Então você diz Int I, Double d, Float f, string s etc. com base na primeira letra.
E j é usado porque, quando você faz int I, J segue logo depois.
fonte
i
antecede essa sintaxe.Eu acho que é uma combinação dos outros motivos mencionados:
Para iniciantes, 'i' era comumente usado por matemáticos em suas notações, e nos primeiros dias de computação com linguagens que não eram binárias (ou seja, tinham que ser analisadas e lexadas de alguma maneira), a grande maioria dos usuários de computadores era também matemáticos (... e cientistas e engenheiros), de modo que a notação passou a ser usada em linguagens de computador para loops de programação e, desde então, ficou travada.
Combine isso com o fato de que o espaço na tela naqueles primeiros dias era muito limitado, assim como a memória, fazia sentido manter nomes de variáveis mais curtos.
fonte
Possivelmente histórico?
FORTRAN, indiscutivelmente o primeiro idioma de alto nível, definido i, j, k, l, m como tipos de dados Inteiros por padrão, e os loops só podiam ser controlados pela variável inteira, a convenção continua?
por exemplo:
faça 100 i = j, 100,5 .... 100 continue ....
fonte
i = iterador, i = índice, i = inteiro
O que quer que você imagine "i" significa que ainda "se encaixa na conta".
Além disso, a menos que você tenha apenas uma única linha de código nesse loop, provavelmente deve nomear a variável iterador / índice / número inteiro para algo mais significativo. Como: employeeIndex
BTW, eu normalmente uso "i" nos meus loops iteradores simples; a menos que, é claro, contenha várias linhas de código.
fonte
i = iota, j = jot; duas pequenas mudanças.
iota é a menor letra do alfabeto grego; no idioma inglês, seu significado está ligado a pequenas mudanças, como em "nem um pingo" (de uma frase no Novo Testamento: "até que o céu e a terra passem, nem um pingo, nem um ponto passará da Lei" (Mt 5:18)).
Um contador representa uma pequena alteração em um valor.
E do iota vem o jot (iot), que também é sinônimo de uma pequena alteração.
cf. http://en.wikipedia.org/wiki/Iota
fonte
Bem de matemática: (para letras latinas)
a, b: usado como constantes ou como números inteiros para um número racional
c: uma constante
d: derivada
e: número do euler
f, g, h: funções
i, j, k: são índices (também vetores unitários e quaternários)
l: geralmente não usado. se parece com 1
m, n: são linhas e colunas de matrizes ou como números inteiros para números racionais
o: também não é usado (a menos que você esteja com pouca notação)
p, q: frequentemente usado como números primos
r: às vezes uma mudança espacial da variável outros tempos relacionados aos números primos
s, t: variáveis espaciais e temporais ou s é usado como uma mudança de variável para t
u, v, w: mudança da variável
x, y, z: variáveis
fonte
Muitas razões principais possíveis, eu acho:
i
ej
para Números Naturais em fórmulas (aqueles que usam Números Complexos raramente, pelo menos), então isso foi transferido para a programaçãoi
dicas paraint
. E se você precisar de outroint
,i2
é muito longo, então você decide usá-loj
.i
é então uminteger
.fonte
Vem de Fortran, onde i, j, k, l, m, n são implicitamente inteiros.
fonte
Definitivamente, vem da matemática, que precedeu a programação de computadores.
Então, de onde veio se em matemática? Meu palpite completamente inculto é que, como um colega disse, os matemáticos gostam de usar grupos alfabéticos para coisas semelhantes - f, g, h para funções; x, y, z para variáveis numéricas; p, q, r para variáveis lógicas; u, v, w para outros conjuntos de variáveis, especialmente em cálculo; a, b, c para muitas coisas. i, j, k é útil para variáveis iterativas, e isso esgota as possibilidades. Por que não m, n? Bem, eles são usados para números inteiros, mas mais frequentemente os pontos finais das iterações, em vez das próprias variáveis iterativas.
Alguém deveria perguntar a um historiador da matemática.
fonte
Os contadores são tão comuns em programas e, nos primeiros dias da computação, tudo era um prêmio ... Os
programadores naturalmente tentaram conservar pixels, e o 'i' exigia menos pixels do que qualquer outra letra para representar. (Os matemáticos, sendo preguiçosos, escolheram o mesmo motivo - como o menor glifo).
Como afirmado anteriormente, 'j' seguiu naturalmente ...
:)
fonte
Eu o uso por vários motivos.
Normalmente, meus loops são baseados em int, então você cria um triângulo completo no teclado digitando "int i", com exceção do espaço que manuseio com o polegar. Essa é uma sequência muito rápida de digitar.
O "i" pode representar iterador, número inteiro, incremento ou índice, cada um dos quais faz sentido lógico.
Com meus usos pessoais anulados, a teoria de que ela é derivada de FORTRAN está correta, onde vars inteiros usavam as letras I - N.
fonte
Eu aprendi o FORTRAN no Control Data Corp. 3100 em 1965. As variáveis que começavam com 'I' a 'N' estavam implícitas como inteiros. Ex: 'IGGY' e 'NORB' eram inteiros, 'XMAX' e 'ALPHA' eram de ponto flutuante. No entanto, você pode substituir isso por meio de declaração explícita.
fonte