Zašto računati računati od nule?
Brojanje od nule vrlo je uobičajena praksa na mnogim računalnim jezicima, ali zašto? Čitajte dalje dok istražujemo fenomen i zašto je on tako raširen.
Današnja sesija pitanja i odgovora dolazi nam ljubaznošću SuperUser-a, podjele Stack Exchangea, grupiranja web-lokacija za pitanja i odgovore u zajednici.
Pitanje
Čitač SuperUser DragonLord je znatiželjan o tome zašto se većina operativnih sustava i programskih jezika računa od nule. Piše:
Računala tradicionalno označavaju numeričke vrijednosti počevši od nule. Na primjer, nizovi u programskim jezicima temeljenim na C-u počinju od nule indeksa.
Koji povijesni razlozi za to postoje i koje praktične prednosti se računa od nule imaju više od jednog računajući?
Zašto doista? Kao što je praksa raširena, zasigurno postoje praktični razlozi za njezinu provedbu.
Odgovor
Doprinositelj SuperUser-a Matteo nudi sljedeće uvide:
Brojanje polja od 0 pojednostavljuje izračun memorijske adrese svakog elementa.
Ako je niz pohranjen u određenom položaju u memoriji (to se zove adresa), položaj svakog elementa može se izračunati kao
element (n) = adresa + n * veličina_izdjela
Ako prvi element smatrate prvim, računanje postaje
element (n) = adresa + (n-1) * veličina_izdjela
Nije velika razlika, ali dodaje nepotrebno oduzimanje za svaki pristup.
Uređeno za dodavanje:
- Korištenje indeksa polja kao offset nije uvjet, već samo navika. Pomak prvog elementa može biti skriven od strane sustava i uzeti u obzir prilikom dodjeljivanja i referenciranja elementa.
- Dijkstra je objavio članak „Zašto bi numeracija trebala početi od nule“ (pdf) gdje objašnjava zašto je početak s 0 bolji izbor. Počevši od nule omogućuje bolju zastupljenost raspona.
Ako želite prodrijeti dublje u odgovor, Dijkstra papir je informativni tekst.
Imate li što dodati objašnjenju? Zvuk isključen u komentarima. Želite li pročitati više odgovora od drugih tehničkih korisnika Stack Exchangea? Pogledajte cjelokupnu temu za raspravu ovdje.