Tänane küsimuste ja vastuste seanss jõuab meile viisakalt SuperUserini - Stack Exchange'i ja kogukonnapõhiste Q & A veebisaitide rühmitusse.
Küsimus
SuperUseri lugeja DragonLord on huvitav, miks enamus operatsioonisüsteeme ja programmeerimiskeele loetakse nulli. Ta kirjutab:
Computers traditionally tally numerical values starting from zero. For example, arrays in C-based programming languages start from index zero.
What historical reasons exist for this, and what practical advantages does counting from zero have over counting from one?
Miks tõesti? Nagu tavaks on laialt levinud, on selle rakendamiseks kindlasti praktilised põhjused.
Vastus
SuperUseri kaastöötaja Matteo pakub järgmisi teadmisi:
Counting arrays from 0 simplifies the computation of the memory address of each element.
If an array is stored at a given position in memory (it’s called the address) the position of each element can be computed as
element(n) = address + n * size_of_the_element
Kui arvate esimest elementi, arvutatakse see arvutus
element(n) = address + (n-1) * size_of_the_element
Mitte suur erinevus, kuid see lisab igale juurdepääsule tarbetu lahutamise.
Redigeeritud lisada:
- Massiivi indeksi kasutamine positsioonina ei ole nõue, vaid lihtsalt harjumus. Süsteem võib varjata esimest elementi ja võtta arvesse elemendi eraldamisel ja viitamisel.
- Dijkstra avaldas dokumendi "Miks nummerdamine peaks algama nullist" (pdf), kus ta selgitab, miks alates 0-st on parem valik. Alates nullist võimaldab vahemike paremat kuvamist.
Kui soovite otsida vastust sügavamalt, on Dijkstra paber informatiivne.
Kas teil on seletamiseks midagi lisada? Helistage kommentaarides. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Tutvu täieliku arutelu teemaga siit.