Prečo počítajú počítače od nuly?
Počítanie od nuly je veľmi bežnou praxou v mnohých počítačových jazykoch, ale prečo? Čítajte ďalej, keď skúmame fenomén a prečo je tak rozšírený.
Dnešná relácia otázok a odpovedí sa k nám pridelí zdvorilosťou SuperUser - podskupiny Stack Exchange, zoskupenia webových stránok typu Q & A.
Otázka
Čítač SuperUser DragonLord je zvedavý, prečo väčšina operačných systémov a programovacích jazykov počíta od nuly. On píše:
Počítače tradične spájajú číselné hodnoty od nuly. Napríklad polia v programovacích jazykoch založených na C začínajú od nuly.
Aké historické dôvody existujú a aké praktické výhody počítal od nuly, viac ako počítanie od jedného?
Prečo skutočne? Rovnako rozšírená ako prax, určite existujú praktické dôvody na jej realizáciu.
Odpoveď
Príspevok spoločnosti SuperUser Matteo ponúka tieto informácie:
Počítanie polí od 0 zjednodušuje výpočet adresy pamäte každého prvku.
Ak je pole uložené na danú pozíciu v pamäti (nazýva sa jej adresa), poloha každého prvku môže byť vypočítaná ako
element (n) = adresa + n * veľkosť prvku
Ak prvý prvok považujete za prvý, výpočet sa stáva
element (n) = adresa + (n-1) * veľkosť prvku
Nie je to obrovský rozdiel, ale pridáva zbytočné odčítanie pre každý prístup.
Upravené pridanie:
- Použitie indexu poľa ako ofset nie je požiadavkou, ale len zvykom. Posun prvého prvku by mohol byť skrytý systémom a braný do úvahy pri prideľovaní a referenčnom prvku.
- Dijkstra publikoval článok "Prečo by číslovanie malo začínať na nulu" (pdf), kde vysvetľuje, prečo začína s 0 je lepšou voľbou. Počnúc nulou umožňuje lepšie zobrazenie rozsahov.
Ak hľadáte hlbšie do odpovede, papier Dijkstra je informatívne čítanie.
Máte niečo doplniť vysvetlenie? Vyjadrite sa v komentároch. Chcete sa dozvedieť viac odpovedí od iných používateľov technickej úrovne Stack Exchange? Pozrite sa na celý diskusný príspevok tu.