Beim Spazieren letztens hörte ich mal keinen Podcast.
Keine Musik. Kein Hörbuch. Nichts.
Ich stapfte einfach durch den Wald, beobachtete meinen Hund beim Schnüffeln, atmete die frische, feuchte Luft.
Sehr feucht.
Es hat uns nämlich komplett abgeregnet.
Aber wie heißt es so schön:
Es gibt ka foischs Wetta, nua foisches Gwand...
oda a foische Einstöllung!
Also ließ ich meinen Gedanken freien Lauf. Das endet selten in Brillanz, oft im Chaos und meistens in Spaß!
Zuerst dachte ich über Zahlensysteme nach.
Wie normale Menschen das beim Waldspaziergang halt so machen. 😅
Dezimal. Binär. Oktal. Hexadezimal.
Easy peasy lemon squeezy!
Dann fing ich an, mir eigene zu bauen.
Wie sähe ein Zahlensystem zur Basis 5 aus? Welche Vor- und Nachteile hätte es?
Zur Basis 17?
Oder, selbstverständlich, zur Basis 1337? Soviel Nerd muss sein! 😂
Keine Sorge: Das waren keine hochtrabenden mathematischen Gedanken.
Das Prinzip ist denkbar simpel:
Bei Basis b brauchst du an den Potenzen b^n eine weitere Stelle.
Dezimal: 10, 100, 1.000 Kennt ma
Binär: 0, 1, 10 (2), 11, 100 (4)
Ternär: 0, 1, 2, 10 (3), 11 (4), 12 (5), 20 (6), 21 (7), 22 (8), 100 (9)
Während ich so herumspielte, blieb ich an etwas viel Banalerem hängen:
Der Null.
Je nach mathematischer Konvention zählt die 0 nicht einmal zu den natürlichen Zahlen.
Warum eigentlich?
Naja.
Wir Menschen beginnen üblicherweise bei 1 zu zählen.
1 Schaf.
2 Schafe.
3 Schafe.
Aber wie viele Schafe habe ich, wenn da kein Schaf steht?
0.
Deshalb haben wir trotz unserer 10 Finger im Dezimalsystem nicht die Ziffern 1 bis 10.
Sondern, wie wir alle wissen:
0 bis 9.
10 mögliche Zustände. Einer davon ist „nichts“.
Und genauso funktioniert es bei anderen Stellenwertsystemen:
Bei Basis b brauchen wir b verschiedene Ziffern: von 0 bis (b-1).
Und während mein Hund vermutlich irgendeiner hochinteressanten Reh-Spur folgte, bog mein Gehirn völlig unnötigerweise Richtung Programmiersprachen ab.
Lua.
Lua verwendet 1-basierte Indexierung.
Wir Informatiker beginnen ja üblicherweise bei 0 zu „zählen“.
Zählen in dem Sinne, dass das erste Element von Arrays (also "Listen mit jeweils gleich großen Elementen") in den allermeisten Sprachen mit 0 zu holen ist.
Eigentlich komisch. Wir wollen ja das erste Element und nicht das 0te.
Aber wir denken hier in Speicher, in Offsets:
Also:
array[0] -> erstes Element.
Das beginnt nunmal bei Offset 0, also am Anfang.
Quasi: „Gib mir das Element 0 Schritte vom Anfang entfernt.“
Lua hingegen beginnt bei 1.
array[1] bedeutet in Lua „Gib mir das erste Element.“
Lua zählt also Positionen.
Andere Sprachen hingegen die Offsets.
Beides absolut logisch.
Und damit stand ich patschnass im Wald und musste mir eine unangenehme Wahrheit eingestehen:
Lua ist vielleicht gar nicht deppert.
Es stellt einfach nur eine andere Frage.
Ich wollte eigentlich nur ein bisschen den Kopf freibekommen.
Nächstes Mal höre ich wieder einen Podcast. 😅