Warum wird in der Informatik bei Null angefangen zu zählen?
Warum wird in der Informatik, bzw. in der Programmierung (in der Regel) bei Null angefangen zu zählen und nicht, wie es intuitiv (und laut Arithmetik) "richtig" wäre, bei 1?
2 Antworten
also das ist von den programmiersprachen abhängig , durchaus gibt es programmiersprachen die bei 1 anfangen zu zählen wenn es um elemente eines arrays geht .
aber wenn wir das mal von speicher addressierung aus sehen dann ist der start des speichers die speicheradresse und das erste element bei speicheradresse+0*strukturgröße , das nächste element dann bei speicheradresse+1*strukturgröße ...
und NULL ist wieder was ganz anderes als 0
Unterm Strich aus arithmetischen Gründen.
Zur Veranschaulichung:
Wenn ich einen Speicherblock habe, dann habe ich eine Startadresse (Basisadresse). Das erste Element liegt nunmal genau an der Basisadressen, was eben Basisadresse+0 ist.
Ich müßte also bei Indizierung ab 1 jedes mal den Offset bei Bestimmung der Adresse korrigieren, oder aber ich müßte sowas dreckiges machen, wie die Basisadresse zu transformieren, sodaß sie nicht mehr dem echten Startpunkt entspricht.
Beides wiederum erzeugt neue Probleme in der Praxis.
Apropos, an welchem Index steht noch gleich der Minutenzeiger zur vollen Stunde?
Der Vergleich mit dem Minutenzeiger hinkt auch.
Das war kein Vergleich, sondern ein Beispiel einer weiteren Nutzung der gleichen Prinzipien. Du hättest die Chance nutzen und Dich in das Thema einarbeiten können.
Da hat man keine Wahl
Natürlich hat man, ich kann die Indices auch mit 1 bis 60 bezeichnen, es ist nur nich sonderlich praktisch, eben aus den arithmetischen Gründen.
Bei der Speicheradresse hat man theoretisch die Wahl
Nicht nur theoretisch, auch praktisch - aber eben mit den gleichen weitreichenden Folgen und Problemen. Mit n Adressleitungen kann ich nunmal 2^n Kombinationen mit dem Wertebereich 0..(2^n )-1 darstellen. In dem Moment wo ich eine künstliche Verschiebung einführe, lege ich mir selbst Steine in den Weg,
Ich kann die "Basisadresse" einfach als 1 definieren.
Man kann vieles machen, die Frage ist, ob es praktikabel, sinnvoll und zielführend ist.
Es gibt Sprachen, die ab 1 indizieren, meist an Anfänger gerichtet. Das mag auf den ersten Blick gut erscheinen, bis man eben die arithmetischen Probleme erkennt.
Ok, danke dir, dass du nochmal so gezielt auf meine "Bedenken" eingegangen bist. :)
Ich kann die "Basisadresse" einfach als 1 definieren. Der Vergleich mit dem Minutenzeiger hinkt auch. Da hat man keine Wahl. Bei der Speicheradresse hat man theoretisch die Wahl.