Brojanje od nule vrlo je uobičajena praksa na mnogim računalnim jezicima, ali zašto? Pročitajte kako istražujemo fenomen i zašto je tako rasprostranjena.
Današnja pitanja i odgovori nam se javljaju zahvaljujući SuperUseru - podjele Stack Exchange-a, zajednice-driven grupiranja Q & A web stranica.
SuperUser čitač DragonLord znatiželjan je zašto se većina operacijskih sustava i programskih jezika računaju od nule. Piše:
Računala tradicionalno broje numeričke vrijednosti počevši od nule. Na primjer, polja u programskim jezicima temeljenim na C početi su od nule indeksa.
Koji povijesni razlozi postoje za to, a koje praktične prednosti računaju od nule imaju prebrojavanje od jednog?
Zašto doista? Kao što je široko rasprostranjena kao i praksa, sigurno postoje praktični razlozi za njegovu provedbu.
SuperUser suradnik Matteo nudi sljedeće uvide:
Brojanje polja od 0 pojednostavljuje izračunavanje memorijske adrese svakog elementa.
Ako je polje pohranjeno na određenom mjestu u memoriji (naziva se adresa), položaj svakog elementa može se izračunati kao
element (n) = adresa + n * veličina_za_elementa
Ako najprije uzmete prvi element, računanje postaje
element (n) = adresa + (n-1) * veličina_elemente
Nije velika razlika, ali dodaje nepotrebnu oduzimanju za svaki pristup.
Uredeno za dodavanje:
- Upotreba indeksa polja kao offset nije uvjet, već samo navika. Razmak prvog elementa može biti skriven od strane sustava i uzeti u obzir prilikom dodjele i reference elementa.
- Dijkstra je objavio rad "Zašto bi brojanje trebalo početi na nuli" (pdf) gdje objašnjava zašto je počevši s 0 bolji izbor. Polazeći od nula omogućava bolju zastupljenost raspona.
Ako želite dublje ukrcati u odgovor, Dijkstraov tekst je informativno čitanje.
Imate li nešto za objašnjenje? Zvuči u komentarima. Želite li pročitati više odgovora od drugih tehnoloških korisnika Stack Exchangea? Pogledajte ovdje cijelu raspravu.