Berechtigungsargument
Nun ... Anscheinend basieren die meisten Sprachen, einschließlich der jüngsten, auf Null. Da diese Sprachen von sehr erfahrenen Leuten geschrieben wurden, muss sich Ihr Freund geirrt haben ...
Warum eins?
Warum wäre 1 ein besserer Startindex als Null? Warum nicht 2 oder 10? Die Antwort selbst ist interessant, weil sie viel über den Durchdringungsprozess der Leute zeigt, die die Idee verteidigen.
Das erste Argument ist , dass es natürlich ist, weil der erste in der Regel das ist eine vor allen anderen, zumindest für die Mehrheit der Menschen ...
Das Zahlen- ein Argument ist , dass der letzte Index ist auch die Größe des Arrays ...
Ich bin immer noch beeindruckt von der "Qualität" der Gründe, die ich normalerweise für diese Art von Argumenten höre ... und noch mehr, wenn ich daran erinnert werde, dass ...
Warum nicht Null?
... "Eins-basierte" Notationen sind Überbleibsel der westlichen Kultur, die die Existenz von Null jahrhundertelang ignorierten, wenn nicht sogar mehr.
Ob Sie es glauben oder nicht, der ursprüngliche gregorianische Kalender geht von -3, -2, -1, 1, 2, 3 ... Versuchen Sie sich das Problem vorzustellen, das es für die westliche Wissenschaft mit sich brachte (zum Beispiel wie viele Jahre vom 1. Januar bis zum 2. Januar) bis zum 1. Januar 2, um zu sehen, dass der ursprüngliche gregorianische Kalender mit etwas so Einfachem wie Subtraktion in Konflikt steht ...).
Das Festhalten an einbasierten Arrays ist wie (nun, ich werde dafür herabgestuft ... ^ _ ^ ...), das Festhalten an Meilen und Yards im 21. Jahrhundert ...
Warum Null? Weil es Mathe ist!
Zuerst (Ups ... Entschuldigung ... ich werde es noch einmal versuchen)
Null , Null ist nichts, man ist etwas. In einigen religiösen Texten heißt es: "Am Anfang war nichts". Einige Computerdiskussionen können so brennend sein wie religiöse Debatten, daher ist dieser Punkt nicht so thematisch, wie es scheint ... ^ _ ^
Erstens ist es einfacher, mit einem nullbasierten Array zu arbeiten und dessen nullten Wert zu ignorieren, als mit einem einbasierten Array zu arbeiten und den nullten Wert zu finden. Dieser Grund war fast so dumm wie der vorherige, aber das ursprüngliche Argument für einseitige Arrays war auch ein ziemlicher Trugschluss.
Zweitens : Wenn Sie mit Zahlen arbeiten, stehen die Chancen gut, dass Sie sich mit Mathematik befassen, und wenn Sie sich mit Mathematik befassen, stehen die Chancen gut, dass Sie nicht in der Stimmung sind, veraltete Konventionen zu umgehen. Die einseitige Notation plagte Mathe und Datumsangaben über Jahrhunderte hinweg, und indem wir aus unseren Fehlern lernen, sollten wir uns bemühen, dies in zukunftsorientierten Wissenschaften (einschließlich Computersprachen) zu vermeiden.
Drittens : Weisen Sie Computersprachen-Arrays, die an Hardware gebunden sind, ein C-Array mit 21 Ganzzahlen zu, und bewegen Sie den Zeiger 10 nach rechts, um ein natürliches [-10 bis 10] -Array zu erhalten. Dies ist für Hardware nicht selbstverständlich. Aber es ist für Mathe. Natürlich könnte Mathematik überholt sein, aber als ich das letzte Mal nachgesehen habe, glaubten die meisten Menschen auf der Welt, dass dies nicht der Fall ist.
Viertens : Wie bereits an anderer Stelle erwähnt, wäre der erste Index auch für diskrete Positionen (oder auf diskrete Werte reduzierte Entfernungen) Null, wie der Fußboden in einem Gebäude (beginnend bei Null), der abnehmende Countdown (3, 2, 1, NULL) !), die Bodenhöhe, das erste Pixel eines Bildes, die Temperatur (null Kelvin, für den absoluten Nullpunkt oder null Grad Celsius, als Wassergefriertemperatur von 273 K). In der Tat ist das einzige, was wirklich mit einem beginnt, die traditionelle Art des " Ersten , Zweiten , Dritten usw." Iterationsnotation , die mich natürlich zum nächsten Punkt führt ...
Fünf der nächste Punkt (die natürlicherweise das folgende vorherigen ) ist , dass High-Level - Container zugegriffen werden soll, nicht durch den Index, sondern von Iteratoren , es sei denn , die Indizes selbst einen intrinsischen Wert haben. Ich bin überrascht, dass Ihr Verfechter der "höheren Sprache" das nicht erwähnt hat. In dem Fall, dass der Index selbst wichtig ist, können Sie wetten, dass Sie die Hälfte der Zeit eine mathematische Frage haben. Sie möchten also, dass Ihr Container mathematikfreundlich und nicht mathematisch deaktiviert ist, wie z. B. "Ihr alter Gregorianischer Kalender", der bei 1 beginnt, und dass er wiederauferlegte Hacks benötigt, damit er funktioniert.
Fazit
Das Argument Ihres Programmierkollegen ist ein Irrtum, weil es die gesprochenen / geschriebenen Sprachgewohnheiten, die von Natur aus verschwommen sind, unnötig mit Computersprachen verknüpft (bei denen Sie nicht möchten, dass Ihre Anweisungen verwischt werden) und weil eine Hardware falsch zugeordnet wird Aus diesem Grund hofft er, Sie zu überzeugen, dass das nullbasierte Array der Vergangenheit angehört, da die Sprachen in der Abstraktion immer höher werden.
Nullbasierte Arrays sind aus mathematischen Gründen nullbasiert. Nicht aus Hardware-Gründen.
Wenn dies ein Problem für Ihren Programmierkollegen ist, lassen Sie ihn mit echten Konstrukten auf hoher Ebene wie Iteratoren und foreach-Schleifen programmieren.