Šiandieninė klausimų ir atsakymų sesija pateikiama su "SuperUser" - "Stack Exchange", bendruomenės valdoma Q & A grupių asociacija.
Klausimas
"SuperUser" skaitytuvas "DragonLord" yra įdomu, kodėl dauguma operacinių sistemų ir programavimo kalbų skaičiuoja nuo nulio. Jis rašo:
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?
Kodėl iš tikrųjų? Kaip plačiai paplitusi praktika, be abejo, yra praktinių priežasčių ją įgyvendinti.
Atsakymas
"SuperUser" autorius "Matteo" siūlo šias įžvalgas:
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
Jei pirmą elementą laiko pirmuoju, apskaičiavimas tampa
element(n) = address + (n-1) * size_of_the_element
Tai nėra didžiulis skirtumas, bet kiekvienai prieigai ji pridedama prie nereikalingo atimties.
Redaguota pridėti:
- Masyvo indekso naudojimas kaip nuokrypis nėra reikalavimas, bet tik įprotis. Pirmojo elemento nuokrypis gali būti paslėptas sistemos ir į jį atsižvelgiama paskirstant elementą ir jo nuorodos.
- Dijkstra paskelbė straipsnį "Kodėl numeravimas turėtų prasidėti nulyje" (pdf), kur jis paaiškina, kodėl pradedant nuo 0 yra geresnis pasirinkimas. Pradedant nuo nulio, galima geriau apibūdinti intervalus.
Jei norėtumėte gilinti į atsakymą, Dijkstra popierius yra informatyvus skaitymas.
Ar turite ką nors įtraukti į paaiškinimą? Garsas išjungtas komentaruose. Norite skaityti daugiau atsakymų iš kitų "Tech-savvy Stack Exchange" vartotojų? Patikrinkite visą diskusijų temą čia.