Warum haben die meisten Programmiersprachen 0 als ersten Index von Arrays? Was sind die Vorteile davon? Warum starten einige Sprachen wie Lua ihre Arrays bei 1?
user
Der Hauptvorteil der 0-basierten Numerierung in Programmiersprachen ist die reduzierte rechnerische Komplexität, die Indizes mittels Pointer Arithmetik an Speicherorte überträgt. Wenn der Startindex 1 war, müsste dies immer vom Index des abgerufenen Elements subtrahiert werden. Der Speicherort $l_i$ des $i^{th}$ Elements eines Arrays ab $l$ ist: $l_i = l + (i - b)*s$, wobei $b$ der Anfang / Startindex des Arrays ist und $s$ die Größe eines Elements. Einfach $b=0$ speichert diese eine Subtraktion. Dennoch beginnen Menschen normalerweise mit einer Zählung bei $1$, also ist diese Art der Indexierung für Menschen, die nicht mit der Kodierung vertraut sind, kontraintuitiv. Deshalb beginnen einige Programmiersprachen normalerweise ihre Indexierung bei $1$ oder erlauben sowohl $0$ als auch $1$-basierte Indexierung.
assistant