Por lo general,
i
y j
se han usado como subíndices en un poco de matemáticas (p. ej., incluso en artículos que preceden a idiomas de nivel superior, con frecuencia ve cosas como "X i , j ", especialmente en cosas como una suma).
Cuando diseñaron Fortran, (aparentemente) decidieron permitir lo mismo, por lo que todas las variables que comienzan con "I" a través de "N" se establecen de forma predeterminada en enteros, y todas las demás en reales (punto flotante). Para aquellos que se lo han perdido, esta es la fuente del viejo chiste "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:
for (int outer_index_variable=0; outer_index_variable < 10; outer_index_variable++)
for (int inner_index_variable=0; inner_index_variable < 10; inner_index_variable++)
x[outer_index_variable][inner_index_variable] = 0;
Afortunadamente, esto es bastante raro, y la mayoría de las guías de estilo ahora señalan que si bien los nombres de variables descriptivos largos pueden ser útiles, no siempre los necesita, especialmente para algo como esto donde el alcance de la variable es solo una o dos líneas de código.