Perché la maggior parte di noi usa 'i' come variabile del contatore di loop?

117

Qualcuno ha pensato al motivo per cui così tanti di noi ripetono lo stesso modello usando gli stessi nomi di variabili?

for (int i = 0; i < foo; i++) {
    // ...
}

Sembra che la maggior parte del codice che ho mai visto utilizzi i , j , k e così via come variabili di iterazione.

Suppongo di averlo estratto da qualche parte, ma mi chiedo perché questo sia così diffuso nello sviluppo del software. È qualcosa che abbiamo raccolto da C o qualcosa del genere?

Solo un prurito che ho avuto per un po 'nella parte posteriore della mia testa.

    
posta kprobst 13.06.2017 - 20:56
fonte

10 risposte

196

i e j sono stati tipicamente usati come pedici in un bel po 'di matematica per un po' di tempo (ad esempio, anche nei documenti che precedono i linguaggi di livello superiore, si vedono spesso cose come "X i , j ", specialmente in cose come una sommatoria).

Quando hanno progettato Fortran, hanno (apparentemente) deciso di consentire lo stesso, quindi tutte le variabili che iniziano con "I" passano da "N" di default a numero intero e tutte le altre a reale (virgola mobile). Per coloro che lo hanno perso, questa è la fonte del vecchio scherzo "Dio è reale (a meno che non sia dichiarato intero)".

La maggior parte delle persone sembra aver visto poche ragioni per cambiarlo. È ampiamente conosciuto e compreso e abbastanza succinto. Di tanto in tanto vedi qualcosa scritto da alcuni psicotici che pensano che ci sia un vero vantaggio in qualcosa tipo:

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;

Fortunatamente questo è piuttosto raro e la maggior parte delle guide di stile ora sottolinea che mentre i nomi di variabili descrittivi possono essere utili, non hanno sempre bisogno di loro, soprattutto per qualcosa di simile in cui l'ambito della variabile è solo una o due righe di codice.

    
risposta data 13.06.2017 - 20:56
fonte
61

i - index.

Una variabile temporanea che viene utilizzata per l'indicizzazione del ciclo iterativo. Se hai già un i , cos'è più naturale di andare a j , k e così via?

In questo contesto viene spesso utilizzato anche idx .

Breve, semplice e mostra esattamente l'utilizzo della variabile, come dovrebbe essere il nome della variabile.

    
risposta data 25.06.2011 - 01:43
fonte
38

In FORTRAN i era la prima lettera di default per il tipo intero. L'intera gamma di tipi interi impliciti era qualsiasi a partire dalle lettere i a n . Lavorare con cicli per tre dimensioni ci ha ottenuto i , j e k . Il modello è continuato per ulteriori dimensioni. Allo stesso modo, 'x', 'y' e 'z' che sono stati impostati come virgola mobile dove sono stati usati per variabili di ciclo che richiedevano numeri reali.

Come note litleadv , i è anche una contrazione minima per indice.

Dato l'uso locale di queste variabili, non vedo un problema che non usi un nome più descrittivo.

    
risposta data 25.06.2011 - 15:40
fonte
34

Credo che provenga da Summation :

    
risposta data 25.06.2011 - 03:51
fonte
8

Mi è stato detto, in un secondo momento dalla mia teoria del professore di computazione un paio di anni fa, che l'origine era dalla notazione matematica delle sommatorie. I, j, k erano comunemente usati come variabili di iterazione intera, e venivano trasferiti dai primi testi sulla teoria del calcolo (che naturalmente è principalmente applicata alla matematica). Apparentemente guardando il lavoro di Knuth et al. back up.

x, y, z come oggetti in virgola mobile apparentemente entrano in gioco con la popolarità di Fortran nelle scienze fisiche, dai ricercatori di fisica che convertono gli integrali in codice sorgente (poiché le integrazioni erano comunemente oltre i confini spaziali ... come x va a 100 et cetera)

Non ho un riferimento a questo, ma come ho detto, è venuto da un professore abbastanza vecchio e sembra avere molto senso.

Spero che questo aiuti

    
risposta data 25.06.2011 - 04:20
fonte
6

Penso che i, j, k siano usati in Matematica per indicare indici in sommatoria e per elementi di matrice (i per le righe e j per le colonne). Nella notazione matematica, alcune lettere tendono ad essere usate con un significato specifico più spesso di altre, ad es. a, b, c per le costanti, f, g, h per le funzioni, x, y, z per le variabili o le coordinate, i, j, k per gli indici. Almeno questo è quello che ricordo dal Math che ho preso a scuola.

Forse questa notazione è stata trasferita al computer perché all'inizio molti scienziati informatici erano matematici o almeno avevano un strong background matematico.

    
risposta data 26.06.2011 - 21:52
fonte
3

i == iteratore o indice

La mia comprensione è sempre stata che "i" è una buona scelta poiché i cicli sono tipicamente per iterare o attraversare con un passo indice noto. Le lettere "j" e "k" seguono bene poiché spesso sono necessari cicli annidati e molti istintivamente conoscono "j" == secondo indice e "k" == terzo indice poiché seguono tale modello nell'alfabeto. Inoltre, con molti che seguono questa convenzione standard, si può tranquillamente pensare che un ciclo "k" abbia probabilmente un ciclo "j" e "i" che lo avvolgono.

    
risposta data 25.06.2011 - 22:10
fonte
1

i, j, k sono usati nel sistema di coordinate cartesiane. Confrontando con x e y che rappresentano gli assi nello stesso sistema e che sono sempre usati come variabili, possiamo dire che anche io, j e k sono venuti da lì.

    
risposta data 25.06.2011 - 15:44
fonte
1

"i" è per l'indice.

Una singola lettera facilita la scansione della linea di codice da parte del tuo occhio. Per qualcosa di comune come loop, un singolo carattere per l'indice è l'ideale. Non c'è confusione su cosa significhi "i" a causa della convenzione.

    
risposta data 25.06.2011 - 16:59
fonte
0

Quando ho iniziato a programmare, Dartmouth BASIC era nuovo. Tutte le variabili in questo e in altri linguaggi al momento erano singoli caratteri. Aggiungete a ciò la convenzione di denominazione delle variabili FORTRAN e il fatto che è molto più facile digitare, solo un carattere, e la comprensione da parte di programmatori e insegnanti più anziani. Non lo so, ma suona bene.

    
risposta data 25.06.2011 - 22:22
fonte