Sé que esto podría parecer una pregunta absolutamente tonta, pero tengo mucha curiosidad por no preguntar ...
¿Por qué "i" y "j" se convirtieron en LAS variables para usar como contadores en la mayoría de las estructuras de control?
Aunque el sentido común me dice que son como X, que se usa para representar valores desconocidos, no puedo evitar pensar que debe haber una razón por la cual todos reciben la misma instrucción una y otra vez.
¿Es porque realmente se recomienda para las mejores prácticas, o una convención, o tiene alguna razón oscura detrás de esto?
Por si acaso, sé que puedo darles el nombre que desee y que los nombres de las variables no son relevantes.
variables
language-agnostic
Carlos
fuente
fuente
Respuestas:
En última instancia, proviene de las matemáticas: la notación de suma tradicionalmente usa i para el primer índice, j para el segundo, y así sucesivamente. Ejemplo (de http://en.wikipedia.org/wiki/Summation ):
También se usa de esa manera para colecciones de cosas, como si tienes un montón de variables x 1 , x 2 , ... x n , entonces una arbitraria se conocerá como x i .
En cuanto a por qué es así, imagino que SLaks es correcto y es porque soy la primera letra en Index.
fuente
i
usa en matemáticas?Creo que se remonta a Fortran. Las variables que comienzan con I a Q eran enteras por defecto, las otras eran reales. Esto significaba que
I
era la primera variable entera, yJ
la segunda, etc., por lo que cayeron hacia el uso en bucles.fuente
I
través deN
noQ
. Google parece estar de acuerdo en su mayoría. (diferentes versiones de FORTRAN?)Los matemáticos usaban i, j, k para designar enteros en álgebra (subíndices, series, sumas, etc.) mucho antes (por ejemplo, 1836 o 1816 ) existían computadoras (este es el origen de los valores predeterminados de tipo variable de FORTRAN). El hábito de usar letras del final del alfabeto (..., x, y, z) para variables desconocidas y desde el principio (a, b, c ...) para constantes generalmente se atribuye a René Descartes , (ver también aquí ), así que supongo que i, j, k ... n (en el medio del alfabeto) para enteros probablemente también se deba a él.
fuente
i = entero
Viene de Fortran, donde las variables enteras tenían que comenzar con las letras I a N y las variables reales comenzaron con las otras letras. Por lo tanto, era el primer y más corto nombre de variable entera. Fortran fue uno de los primeros lenguajes de programación de uso generalizado y los hábitos desarrollados por los programadores que lo utilizan se trasladaron a otros lenguajes.
EDITAR : No tengo ningún problema con la respuesta que deriva de las matemáticas. Sin duda, ahí es donde los diseñadores de Fortran se inspiraron. El hecho es que, de todos modos, cuando comencé a programar en Fortran usamos I, J, K, ... para contadores de bucles porque eran cortos y los primeros nombres de variables permitidos legalmente para enteros. Como estudiante de segundo año en HS probablemente había oído hablar de Descartes (y muy pocos otros), pero hice muy poca conexión con las matemáticas al programar. De hecho, el primer curso que tomé se llamó "Fortran for Business" y no fue impartido por la facultad de matemáticas, sino por la facultad de negocios / economía.
Para mí, al menos, el nombramiento de variables tenía poco que ver con las matemáticas, pero todo debido a los hábitos que aprendí escribiendo el código Fortran que llevaba a otros idiomas.
fuente
i
significa I ndex.j
que viene despuési
.fuente
Estos símbolos se usaron como índices de matriz en matemáticas mucho antes de que se inventaran las computadoras electrónicas.
fuente
Creo que probablemente se deriva del índice (en el sentido matemático ): se usa comúnmente como un índice en sumas u otras operaciones basadas en conjuntos, y lo más probable es que se haya usado de esa manera desde antes de que existieran lenguajes de programación.
fuente
Y = Σ Xi
precede a cada lenguaje de programación.i
. Pero originalmente lo uso principalmente porque todo el código que veo en otro lugar lo usa, y eso puede ser heredado de los programadores de Fortran ...Hay una preferencia en matemáticas por usar letras consecutivas en el alfabeto para variables "anónimas" usadas de manera similar. Por lo tanto, no solo "i, j, k", sino también "f, g, h", "p, q, r", "x, y, z" (raramente con "u, v, w" antepuesto), y "α, β, γ".
Ahora "f, g, h" y "x, y, z" no se usan libremente: el primero es para funciones, el segundo para dimensiones. "p, q, r" también se usan a menudo para funciones.
Luego hay otras restricciones en las secuencias disponibles: "l" y "o" se evitan, porque se parecen demasiado a "1" y "0" en muchas fuentes. "t" se usa a menudo para el tiempo, "d & δ" para diferenciales y "a, s, m, v" para las medidas físicas de aceleración, desplazamiento, masa y velocidad. Eso no deja muchas brechas de tres letras consecutivas sin asociaciones no deseadas en matemáticas para los índices.
Entonces, como varios otros han notado, las convenciones de las matemáticas tuvieron una fuerte influencia en las convenciones de programación temprana, y "α, β, γ" no estaban disponibles en muchos juegos de caracteres tempranos.
fuente
a, b, c
es una secuencia bastante comúnmente usada pesar dea
tener múltiples significados ...Encontré otra posible respuesta que podría ser que yo, jyk provienen
Hamilton's Quaternions
.Euler escogió i para la unidad imaginaria.
Hamilton necesitaba dos raíces cuadradas más de -1:
ii = jj = kk = ijk = -1
Hamilton fue realmente influyente, y los cuaterniones eran la forma estándar de hacer análisis 3D antes de 1900. Para entonces, los matemáticos estaban acostumbrados a pensar en (ijk) como un conjunto coincidente. El cálculo vectorial reemplazó el análisis cuaterniónico en la década de 1890 porque era una mejor manera de escribir las ecuaciones de Maxwell. Pero la gente tendía a escribir cantidades vectoriales como esta: en
(3i-2j+k)
lugar de(3,-2,1)
. Entonces (ijk) se convirtió en los vectores base estándar en R ^ 3.Finalmente, los físicos comenzaron a usar la teoría de grupos para describir simetrías en sistemas de ecuaciones diferenciales. Entonces (ijk) comenzó a connotar "vectores que se intercambian por grupos de permutación", luego se dirigió hacia "cosas similares a índices que toman todos los valores posibles en un conjunto específico", que es básicamente lo que significan en un bucle for.
fuente
descartando (un poco sesgado)
fuente
number
, por lo general, el número de elementos en un conjunto.Una tarde soleada, Arquímedes reflexionó ( como era habitual en las tardes soleadas ) y se encontró con su amigo Eratóstenes.
Arquímedes dijo: "¡Saludo de Arquímedes a Eratóstenes! Estoy tratando de encontrar una solución a la relación de varios cuerpos rígidos esféricos en equilibrio. Deseo iterar sobre estos cuerpos varias veces, pero estoy pasando un tiempo terrible haciendo un seguimiento de cuántas iteraciones he hecho "
Eratóstenes dijo: "¡Por qué Arquímedes, que eres un ciruelo maduro, simplemente puedes marcar sucesivas filas de líneas en la arena, cada una de las cuales realiza un seguimiento del número de iteraciones que has hecho dentro de la iteración!"
Arquímedes gritó al mundo que su gran amigo era sin lugar a dudas un brillante rayo de inteligencia por encontrar una solución tan simple. Pero Arquímedes comentó que le gusta caminar en círculos alrededor de su pozo de arena mientras reflexiona. Por lo tanto, existía el riesgo de perder la noción de qué fila estaba arriba y cuál abajo.
"¡Quizás debería marcar estas filas con una letra del alfabeto a un lado para que siempre sepa qué fila es cuál! ¿Qué piensas de eso?" preguntó, luego agregó: "Pero Eratóstenes ... ¿qué letras debo usar?"
Eratóstenes estaba seguro de que no sabía qué letras serían las mejores, y se lo dijo a Arquímedes. Pero Arquímedes no estaba satisfecho y siguió presionando al pobre bibliotecario para que eligiera, al menos, las dos letras que necesitaría para su solución de equilibrio de esfera actual.
Eratóstenes, finalmente cansado de la solicitud incesante de dos cartas, gritó: "¡¡¡NO LO SABO !!!"
Entonces Arquímedes eligió las dos primeras letras de la oración exclamativa de Eratóstenes, y agradeció a su amigo por la contribución.
Estos símbolos fueron adoptados rápidamente por los antiguos desarrolladores griegos de Java, y el resto es, bueno ... historia.
fuente
j
.Creo que es porque muchos bucles usan una variable de tipo Int para hacer el conteo, como
y cuando escribes, en realidad lo dices en tu cabeza (como cuando lees), así que en tu mente dices 'int ...'
y cuando tiene que inventar una letra justo después de ese 'int ...', dice / escribe la 'i' porque esa es la primera letra en la que piensa cuando acaba de decir 'int'
como deletrear una palabra a los niños que comienzan a aprender a leerle deletrear palabras usando nombres, como este:
WORD deletrea William W, Ok O, Ruby R, Done D
Entonces dices Int I, Double d, Float f, string s etc. en base a la primera letra.
Y j se usa porque cuando has hecho int I, J lo sigue justo después.
fuente
i
es anterior a esta sintaxis.Creo que es una combinación de las otras razones mencionadas:
Para empezar, los matemáticos usaban comúnmente 'i' en su notación, y en los primeros días de la computación con lenguajes que no eran binarios (es decir, debían analizarse y expresarse de alguna manera), la gran mayoría de los usuarios de computadoras eran también matemáticos (... y científicos e ingenieros), por lo que la notación se usó en lenguajes de computadora para programar bucles, y desde entonces se ha quedado algo así.
Combine esto con el hecho de que el espacio de la pantalla en esos primeros días era muy limitado, al igual que la memoria, tenía sentido mantener nombres de variables más cortos.
fuente
¿Posiblemente histórico?
FORTRAN, posiblemente el primer lenguaje de alto nivel, definió i, j, k, l, m como tipos de datos enteros por defecto, y los bucles solo podían controlarse mediante una variable entera, ¿continúa la convención?
p.ej:
do 100 i = j, 100,5 .... 100 continuar ....
fuente
i = iterador, i = índice, i = entero
Cualquiera que sea su figura, "i" significa que todavía "se ajusta a la ley".
Además, a menos que tenga una sola línea de código dentro de ese ciclo, probablemente debería nombrar la variable iterador / índice / entero a algo más significativo. Me gusta: employeeIndex
Por cierto, generalmente uso "i" en mis simples iteradores de bucles; a menos, por supuesto, que contenga varias líneas de código.
fuente
i = iota, j = jot; Ambos pequeños cambios.
iota es la letra más pequeña del alfabeto griego; en el idioma inglés su significado está vinculado a pequeños cambios, como en "ni una pizca" (de una frase en el Nuevo Testamento: "hasta que el cielo y la tierra pasen, ni una pizca, ni un punto, pasará de la Ley" (Mt 5:18)).
Un contador representa un pequeño cambio en un valor.
Y de iota viene jot (iot), que también es sinónimo de un pequeño cambio.
cf. http://en.wikipedia.org/wiki/Iota
fuente
Bien de las matemáticas: (para letras latinas)
a, b: se usan como constantes o como números enteros para un número racional
c: una constante
d: derivada
e: el número de Euler
f, g, h: las funciones
i, j, k: son índices (también vectores unitarios y los cuaterniones)
l: Generalmente no se utiliza. se ve como 1
m, n: son filas y columnas de matrices o como números enteros para números racionales
o: también no se usa (a menos que tenga poca notación o)
p, q: a menudo se usa como primos
r: a veces un cambio espacial de variable otras veces relacionadas con números primos
s, t: variables espaciales y temporales o s se usa como un cambio de variable para t
u, v, w: cambio de variable
x, y, z: variables
fuente
Muchas posibles razones principales, supongo:
i
yj
para los números naturales en las fórmulas (las que usan números complejos rara vez, al menos), por lo que esto se trasladó a la programacióni
insinúa aint
. Y si necesita otroint
,i2
es demasiado tiempo, por lo que decide usarloj
.i
luego es uninteger
.fuente
Proviene de Fortran, donde i, j, k, l, m, n son implícitamente enteros.
fuente
Definitivamente proviene de las matemáticas, que precedieron a la programación de computadoras.
Entonces, ¿de dónde vino si en matemáticas? Mi conjetura sin educación es que, como dijo un compañero, a los matemáticos les gusta usar grupos alfabéticos para cosas similares: f, g, h para funciones; x, y, z para variables numéricas; p, q, r para variables lógicas; u, v, w para otros conjuntos de variables, especialmente en cálculo; a, b, c para muchas cosas. i, j, k es útil para variables iterativas, y eso agota las posibilidades. ¿Por qué no m, n? Bueno, se usan para enteros, pero más a menudo los puntos finales de iteraciones en lugar de las variables iterativas en sí.
Alguien debería preguntarle a un historiador de las matemáticas.
fuente
Los contadores son muy comunes en los programas, y en los primeros días de la informática, todo era importante ... Los
programadores naturalmente intentaron conservar píxeles, y la 'i' requería menos píxeles que cualquier otra letra para representar. (Los matemáticos, siendo flojos, lo eligieron por la misma razón, como el glifo más pequeño).
Como se dijo anteriormente, 'j' simplemente siguió naturalmente ...
:)
fuente
Lo uso por varias razones.
Por lo general, mis bucles están basados en int, por lo que haces un triángulo completo en el teclado escribiendo "int i" con la excepción del espacio que manejo con el pulgar. Esta es una secuencia muy rápida para escribir.
La "i" podría significar iterador, entero, incremento o índice, cada uno de los cuales tiene sentido lógico.
Con mis usos personales a un lado, la teoría de que se deriva de FORTRAN es correcta, donde los números enteros usan las letras I - N.
fuente
Aprendí FORTRAN en Control Data Corp. 3100 en 1965. Las variables que comienzan con 'I' hasta 'N' implicaban ser enteros. Por ejemplo: 'IGGY' y 'NORB' eran enteros, 'XMAX' y 'ALPHA' eran de coma flotante. Sin embargo, puede anular esto mediante una declaración explícita.
fuente