Notiz ins Gedankenbuch: JA, Pascal *ist* komisch!
Warum fangen Listen eigentlich mit 0 an?
Ok, dann zahlen wir Delphi eben zur Gattung der "Jedes-Offset-ist-möglich"-Sprachen Ich wollte nur darauf hinaus, dass Delphi nicht bei null anfängt, da der OP die null ja erwähnt hatte.BlackJack hat geschrieben:@Lunar: Das stimmt zwar, aber deswegen würde ich Delphi nicht als Einser-Offset-Sprache bezeichnen.
Python gehört auch zu den "Jedes-Offset-ist-möglich"-Sprachen.
Nur weil die Standardklassen das so wollen, muss man's ja nicht beibehalten.
Mal ein einfaches Beispiel:
Erweitert die Klasse `list` ganz einfach um die Möglichkeit, selbst den Startindex zu bestimmen.
Nur weil die Standardklassen das so wollen, muss man's ja nicht beibehalten.
Mal ein einfaches Beispiel:
Code: Alles auswählen
class OffsetList(list):
def __init__(self, offset=0):
super(OffsetList, self).__init__()
self.offset = offset
def __setitem__(self, index, item):
s = super(OffsetList, self)
return s.__setitem__(index - self.offset, item)
def __getitem__(self, index):
s = super(OffsetList, self)
return s.__getitem__(index - self.offset)
Eine eigene Listenimplementierung, die dann irgendwo anfängt zu zählen, kannst du in jeder beliebigen Sprache schreiben. Man kann nur nicht in jeder Sprache den Operator dazu überladen und muss ggf. anders auf die Elemente zugreifen. Daher sieht man den Unterschied nur nicht.
Von Haus aus beginnt Python also bei 0.
Von Haus aus beginnt Python also bei 0.
Natürlich aber ich denke Delphi oder sonsteine Sprache wird intern auch, unabhängig davon, bei welchem Wert man anfängt, auf 0 zeigen, oder?EyDu hat geschrieben:Eine eigene Listenimplementierung, die dann irgendwo anfängt zu zählen, kannst du in jeder beliebigen Sprache schreiben. Man kann nur nicht in jeder Sprache den Operator dazu überladen und muss ggf. anders auf die Elemente zugreifen. Daher sieht man den Unterschied nur nicht.
Von Haus aus beginnt Python also bei 0.
Das wäre dann ja nichts anderes als die obige Klasse.
Deshalb würde ich schon sagen, dass Python nicht unbedingt bei 0 anfängt.
Eine Frage der Implementierung der list-Klassen (ich zähle zu List-Klassen jetzt einfach mal alle Klassen, die den Indexoperator implementiert haben, ich kenn mich nicht mit den Fachbegriffen aus ), wo man anfängt.
Man hätte die Klasse ja auch von Haus aus so schreiben können, wie ich das jetzt oben gemacht habe, wäre ja Python an sich egal und dadurch wär's immer noch dieselbe Sprache. Wobei das wahrscheinlich nicht unbedingt den Prinzipien von Python entspricht, weshalb man dann auch streng genommen sagen könnte "Das ist kein Python", aber das ist jetzt Haarspalterei.
Gibts das auch als "normalen" Text? Ich hab keine Lust mir englische handgeschriebene Texte durchzulesen, welche ein Thema zu einem Fachbereich behandeln, das ist irgendwie doppelt anstrengend :p
Ich fand es gerade nett, das Dijkstra seine Gedanken noch mit der Hand aufgeschrieben hat und das auch noch in einer sehr ausdrucksstarken Schrift. Aber wenn's sein muss...
Stefan
Stefan
Naja vielleicht schon nett, aber ich bin vielleicht einfach zu dumm dazusma hat geschrieben:Ich fand es gerade nett, das Dijkstra seine Gedanken noch mit der Hand aufgeschrieben hat und das auch noch in einer sehr ausdrucksstarken Schrift. Aber wenn's sein muss...
Stefan
Danke für den Link