Nollasta laskeminen on hyvin yleinen käytäntö monilla tietokonekielillä, mutta miksi? Lue, kun tutkimme ilmiötä ja miksi se on niin yleistä.
Tämän päivän Kysymys- ja vastausistunto tulee meille SuperUser-yhteisöstään, joka on Stack Exchangen osasto.
Kysymys
SuperUser-lukija DragonLord on utelias, miksi useimmat käyttöjärjestelmät ja ohjelmointikielet laskevat nollasta. Hän kirjoittaa:
Tietokoneet vastaavat perinteisesti numeerisia arvoja nollasta alkaen. Esimerkiksi C-pohjaisten ohjelmointikielien taulukot alkavat indeksistä nolla.
Mitä historiallisia syitä tähän on, ja mitä käytännön etuja nollasta laskemisella on verrattuna yhteen?
Miksi todellakin? Niin laajaa kuin käytäntö onkin, sen toteuttamiselle on varmasti käytännön syitä.
Vastaus
SuperUser-avustaja Matteo tarjoaa seuraavat oivallukset:
Taulukoiden laskeminen nollasta yksinkertaistaa kunkin elementin muistiosoitteen laskemista.
Jos taulukko on tallennettu tiettyyn muistin kohtaan (sitä kutsutaan osoitteeksi), kunkin elementin sijainti voidaan laskea
elementti (n) = osoite + n * elementin kokoJos pidät ensimmäistä elementtiä ensimmäisenä, laskennasta tulee
elementti (n) = osoite + (n-1) * elementin kokoEi suuri ero, mutta se lisää tarpeettoman vähennyksen jokaiselle pääsylle.
Muokattu lisäämään:
- Taulukkoindeksin käyttö offsetina ei ole vaatimus, vaan vain tapa. Ensimmäisen elementin siirtymän voi piilottaa järjestelmä ja se voidaan ottaa huomioon allokoitaessa ja viitattaessa.
- Dijkstra julkaisi paperin "Miksi numeroinnin pitäisi alkaa nollasta" ( pdf ), jossa hän selittää, miksi nollasta alkaminen on parempi valinta. Aloittaminen nollasta sallii alueiden paremman esityksen.
Jos haluat syventää vastausta, Dijkstra-artikkeli on informatiivinen lukutaito.
Onko sinulla jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta teknisesti taitavilta Stack Exchangen käyttäjiltä? Katso koko keskusteluketju täältä .