Dies ist eine Frage, über die ich mich schon lange gewundert habe (und die mir gestellt wurde).
In (fast? Allen?) Programmiersprachen beginnt ein Index bei Null für ein Array, eine Zeichenfolge usw. Ich erkenne, dass er im Laufe der Zeit zur Konvention wurde und in vielen Sprachen übernommen wurde. Kann jemand auf den Ursprung hinweisen?
Ich dachte, vielleicht hat es damit zu tun, dass alles in Binärform verwurzelt ist. Aber ich bin mir nicht sicher, ob die Idee die Notwendigkeit im Dezimalsystem erfüllt - warum nicht einen Index von 1 beginnen?
Hat jemand historische Kenntnisse in Programmiersprachen, in denen die Entscheidung, Indizes bei Null zu beginnen, möglicherweise erklärt wurde?
Vielen Dank!
EDIT: Die Dijkstra-Schriften sind vom mathematischen Standpunkt aus weiter hilfreich, aber selbst er hat bemerkt, dass nicht alle Sprachen nullindiziert sind. Die Erklärung von WBT macht auch Sinn, warum man basierend auf Speicheradressen mit Null beginnen würde. (Ich weiß, dass einige Sprachen die Indizierung aufgrund der Array-Manipulation etwas anders handhaben.)
Ich suche nicht unbedingt für die , warum (was ich sehr zu schätzen wissen , weil es weiter ein Verständnis hilft) , sondern mehr nach dem Vorbild der als hätte dies die Konvention wurde und / oder ob es kann auf eine bestimmte Sprache zurückgeführt werden.
So erklärt beispielsweise in K & Rs C bei der Erörterung von Array-Indizes K oder R sachlich: "Array-Indizes beginnen in C immer bei Null ..." (S. 22) Später bei der Erörterung einer Funktion zum Verarbeiten von Zeichen Arrays: "... ein nützlicheres Design wäre die Rückgabe der Zeilenlänge oder Null, wenn das Dateiende angetroffen wird. Null ist eine akzeptable Rückgabe am Dateiende, da es sich nie um eine gültige Zeilenlänge handelt." (S. 127)
Basierend auf K & R habe ich festgestellt, dass a) die Konvention von einer anderen Stelle übernommen wurde, sodass C nicht die Inspiration für die Nullindizierung ist und b) es möglicherweise tiefere Gründe für ihre Verwendung gibt, die auf dem zweiten Beispiel basieren. Ich weiß, dass K & R für seine klare Prosa so weithin bekannt ist, und das ist ein weiterer Grund, warum ich es einbeziehe, um ein Beispiel dafür zu geben, was ich gehofft hatte, dass eine andere dokumentierte Sprache den Grund für die Nullindizierung erklären würde.
Ich denke, sowohl WBT als auch btilly bieten gleich gute Gründe; Ich fragte mich, ob jemand, der vielleicht alte Sprachen (vor C?) Kannte, die die Entwurfsentscheidung dokumentierten. Gleichzeitig erkenne ich, dass solche Informationen möglicherweise nicht vorhanden sind.