¿Alguien ha pensado por qué tantos de nosotros repetimos este mismo patrón usando los mismos nombres de variables?
for (int i = 0; i < foo; i++) {
// ...
}
Parece que la mayoría de código que he mirado usos i
, j
, k
y así sucesivamente como variables de iteración.
Supongo que lo aprendí de alguna parte, pero me pregunto por qué esto es tan frecuente en el desarrollo de software. ¿Es algo que todos aprendimos de C o algo así?
Solo un picor que he tenido por un tiempo en la parte posterior de mi cabeza.
ii
(yjj
,kk
...) para que sea más fácil de localizar cuando busco.Respuestas:
i
yj
generalmente se han utilizado como subíndices en bastante matemática durante bastante tiempo (por ejemplo, incluso en documentos que son anteriores a los idiomas de nivel superior, con frecuencia se ven cosas como "X i, j ", especialmente en cosas como una sumatoria).Cuando diseñaron Fortran, (aparentemente) decidieron permitir lo mismo, por lo que todas las variables que comienzan con "I" hasta "N" son por defecto enteras y todas las demás a real (punto flotante). Para aquellos que se lo perdieron, esta es la fuente de la vieja broma "Dios es real (a menos que se declare entero)".
La mayoría de las personas parecen haber visto pocas razones para cambiar eso. Es ampliamente conocido y entendido, y bastante sucinto. De vez en cuando ves algo escrito por un psicótico que cree que hay una ventaja real en algo como:
Afortunadamente, esto es bastante raro, y la mayoría de las guías de estilo ahora señalan que si bien los nombres largos y descriptivos de variables pueden ser útiles, no siempre los necesita, especialmente para algo como esto, donde el alcance de la variable es solo una línea o dos de código .
fuente
i
- índice.Una variable temporal que se utiliza para indexar la iteración del bucle. Si ya tienes una
i
, lo que es más natural que va aj
,k
y así sucesivamente?En ese contexto a
idx
menudo se usa también.Corto, simple y muestra exactamente cuál es el uso de la variable, como debería ser el nombre de la variable.
fuente
i
para bucles.i
podría significar iterador.En FORTRAN
i
fue la primera letra predeterminada para el tipo entero. La gama completa de tipos enteros implícitos comenzaba con las letrasi
an
. Trabajar con bucles de tres dimensiones nos metiói
,j
yk
. El patrón continuó para dimensiones adicionales. Del mismo modo, 'x', 'y' y 'z', que por defecto eran de coma flotante, se usaban para variables de bucle que requerían números reales.Como
litleadv
notas,i
también es una contracción mínima para el índice.Dado el uso local de estas variables, no veo un problema al no usar un nombre más descriptivo.
fuente
Creo que proviene del resumen :
fuente
Hace un par de años, mi profesor de teoría de la computación me dijo que el origen era de la notación de suma matemática. i, j, k se usaban comúnmente como variables de iteración de enteros, y se transfirieron desde los primeros textos sobre la teoría de la computación (que, por supuesto, es principalmente matemática aplicada). Aparentemente mirando el trabajo de Knuth et al. respalda esto.
x, y, z como iterantes de coma flotante aparentemente llegaron con la popularidad de Fortran en las ciencias físicas, de investigadores de física que convirtieron integrales en código fuente (ya que las integraciones eran comúnmente más allá de los límites espaciales ... a medida que x llega a 100, etc.)
No tengo una referencia para respaldar esto, pero como digo, vino de un profesor bastante viejo y parece tener mucho sentido.
Espero que esto ayude
fuente
Creo que i, j, k se usan en matemáticas para indicar índices en sumaciones y para elementos matriciales (i para las filas yj para las columnas). En notación matemática, algunas letras tienden a usarse con un significado específico con más frecuencia que otras, por ejemplo, a, b, c para constantes, f, g, h para funciones, x, y, z para variables o coordenadas, i, j, k para índices. Al menos esto es lo que recuerdo de las matemáticas que tomé en la escuela.
Quizás esta notación se haya transferido a la informática porque al principio muchos informáticos eran matemáticos o al menos tenían una sólida formación matemática.
fuente
i == iterador o índice
Mi comprensión siempre ha sido 'i' es una buena opción ya que los bucles son generalmente para iterar o atravesar con un paso de índice conocido. Las letras 'j' y 'k' siguen bien, ya que a menudo se necesitan bucles anidados y la mayoría sabrá instintivamente 'j' == segundo índice y 'k' == tercer índice ya que siguen ese patrón en el alfabeto. Además, con muchos siguiendo esta convención estándar, uno puede asumir con seguridad que un bucle 'k' probablemente tendrá un bucle 'j' e 'i' envolviéndolo.
fuente
i, j, k se usan en el sistema de coordenadas cartesianas. Comparando con x e y que representan ejes en el mismo sistema y que siempre se usan como variables, podemos decir que i, j y k también provienen de allí.
fuente
"i" es para el índice.
Una sola letra hace que sea más fácil para sus ojos escanear la línea de código. Para algo tan común como el bucle, un único carácter para el índice es ideal. No hay confusión en cuanto a lo que significa "i" debido a la convención.
fuente
Cuando comencé a programar, Dartmouth BASIC era nuevo. Todas las variables en este y otros idiomas en ese momento eran caracteres individuales. Agregue a eso la convención de nomenclatura variable FORTRAN y el hecho de que es mucho más fácil escribir, solo un carácter, y la comprensión de los programadores y maestros más antiguos. No lo sé, pero suena bien.
fuente