Perché la prima colonna dell'elenco si chiama 0 in tante lingue? [duplicare]

0

Se vuoi il primo elemento della lista o dell'array, lo fai riferimento a 0 in molte lingue (come C o Clojure). Ci sono davvero dei buoni motivi per cui i linguaggi di programmazione sono stati progettati in questo modo?

Nei vecchi tempi nei linguaggi di assemblaggio ha perfettamente senso perché è necessario utilizzare tutti i valori possibili.

Ma cosa lo fanno oggi in questo modo? C'è molto poco vantaggio quando l'aritmetica modulo e gli intervalli ( articolo di Wikipedia. ) ma non molto di più.

Da un lato degli svantaggi dovrebbe essere: Fa confusione perché è il linguaggio umano il primo è connesso con 1 (1 ° e non è solo in inglese). Rende confusione anche in XPath ( W3School: "Nota: in IE 5,6,7,8,9 il primo nodo è [0 ], ma secondo W3C, è [1]. "). Ci sono problemi tra le lingue che usano sistemi basati su 1 e 0.

Vuoi sapere quali sono i buoni motivi per utilizzare la numerazione basata su zero e perché persino il creatore di nuovi linguaggi (come Clojure) sceglie in questo modo?

    
posta boucekv 18.07.2014 - 12:35
fonte

1 risposta

3

Sì, c'è un motivo:

Se si dispone di un indirizzo basato su 1, l'elemento iniziale (primo) dell'array si trova comunque all'indirizzo zero. È una contraddizione, che scompare se si ha un indirizzo basato su 0. E per l'ultima hai meno operazioni quando conti l'indirizzo dell'elemento. Quindi, il conteggio degli array in C è più efficace di FORTRAN-4 basato su 1 molto più vecchio.

Naturalmente, ai nostri giorni le ragioni devono essere basate sulla convenienza umana. E contare la riga = la sequenza di numeri naturali inizia a 1. E ognuno di noi ha iniziato a contare da 1 durante l'infanzia.

Ma le persone che fanno nuove lingue stanno pensando ad altre due ragioni: la semplicità grammaticale del linguaggio e dei costumi dei probabili futuri utenti. E se vuoi ottenere utenti C, introduci l'indirizzo a 0.

E, naturalmente, un altro motivo puramente soggettivo: gli autori del linguaggio possono semplicemente gradire o non gradire uno di questi schemi.

    
risposta data 18.07.2014 - 12:48
fonte

Leggi altre domande sui tag