Questa è una domanda che mi sono chiesto (e che mi è stato chiesto) a lungo.
In (la maggior parte?) tutti i linguaggi di programmazione, un indice inizia da zero per un array, una stringa, ecc. Riconosco che è diventato convenzione nel tempo, adottato in molte lingue, ma qualcuno può indicare l'origine di questo?
Ho pensato, forse, che avesse a che fare con il fatto di essere tutti radicati in binario. Ma non sono sicuro dell'idea che porta alla necessità nel sistema decimale - perché non iniziare un indice da 1?
Qualcuno ha una conoscenza storica dei linguaggi di programmazione in cui la decisione di iniziare gli indici a zero potrebbe essere stata spiegata?
Grazie!
EDIT: Gli scritti di Dijkstra sono ulteriormente utili da un punto di vista matematico, ma ha anche notato che non tutte le lingue sono indicizzate a zero. La spiegazione di WBT ha anche senso sul perché si dovrebbe iniziare con zero in base agli indirizzi di memoria. (So che alcune lingue gestiscono l'indicizzazione leggermente diversa in base alla manipolazione dell'array.)
Non sono necessariamente alla ricerca del perché (che apprezzo molto perché aiuta a capire meglio) ma più sulla falsariga di quando è diventato questo convenzione e / o se può essere rintracciata in una lingua specifica.
Quindi, per esempio in K & R's C, quando si discutono gli indici di array, K o R spiega in modo pratico, "Gli indici di matrice iniziano sempre a zero in C ..." (p.22) Successivamente, discutendo una funzione per elaborare array di caratteri, "... una progettazione più utile sarebbe quella di restituire la lunghezza della linea, o zero se si incontra la fine del file. Zero è un ritorno accettabile di fine file perché non è mai valido lunghezza della linea. " (p 127)
Sulla base di K & R, raccolgo a) la convenzione viene adottata da altrove, quindi C non è l'ispirazione dietro lo zero-indexing eb) ci sono forse ragioni più profonde per il suo uso basato sul secondo esempio. So che K & R è così ampiamente considerato per la sua chiara prosa, quindi questo è un altro motivo per includerlo, per dare un esempio di ciò che speravo che un altro linguaggio documentato facesse per spiegare il motivo alla base dell'indicizzazione dello zero.
Penso che sia WBT che btilly offrono altrettanto buone ragioni; Mi chiedevo se qualcuno che forse conoscesse vecchie (pre-C?) Lingue che documentassero la decisione progettuale. E allo stesso tempo riconosco che tali informazioni potrebbero non esistere.