Lehet, hogy az a probléma, hogy amikor számozunk valamit, két számozási módszer közül választhatunk, az egyik a valós számok halmazának használata mint intervallumok, a másik a természetes számok halmazának használata.
Amikor egy osztható dolgot számolunk, az előbbi számozási módszert használjuk, méghozzá balról zárt, jobbról nyílt intervallumok használatával. Azaz megnézzük, hogy az adott szám az intervallumon hol helyezkedik el, majd ha szükséges, lefelé kerekítünk.
Viszont ha oszthatatlan dolgot számolunk, soha nem kerekítünk lefelé. Sőt, extrém esetben fölfelé kerekítünk, pl. felvágok egy almát 4 szeletre, majd megeszem az egyik szelet felét. Ekkor mondhatom, hogy 3,5 szelet almám van, de mivel a szelet (nem mint almaszelet, hanem mint dolog) oszthatatlan, ezért azt mondom, hogy 4 szelet almám van.
Ha ezt átültetem az eredeti problémára, azt kapom, hogy egy device oszthatatlan, ezért logikusan az utóbbi számozást alkalmazom rá, ezért nem használhatom a 0-t mint sorszámot. Ez device-ok esetén nem is lenne probléma, mert úgy nevezek el egy device-t ahogy akarok, a számoknak csak az abc sorrend, illetve a megkülönböztethetőség miatt van szerepük.
Viszont informatikában gyakran alkalmazunk egy harmadik számozási lehetőséget, ez pedig az offset. Azaz amikor kijelöljük az első elem helyét, majd megadjuk, hogy a keresett elem mennyivel eltolva helyezkedik el az első elemhez képest. Pl. C-ben a tömb definíciója szerint az A[B] elem címét úgy kapjuk meg, hogy az A címhez hozzáadjuk a sizeof *A * B számot. Ekkor pedig az első elem címe: A + sizeof *A * 0.
Magától értetődő, hogy amikor egy programozó erre a számozásra rászokik, hajlamos ott is ezt alkalmazni, ahol nem indokolt. És ha egyszer kialakul egy kvázi standard (azaz pl. az eth device-okat 0-val kezdve számozzuk), akkor már nem éri meg megváltoztatni.
--
Don't be an Ubuntard!