Seite 2 von 2

Verfasst: Mittwoch 18. Juni 2008, 18:40
von Y0Gi
Notiz ins Gedankenbuch: JA, Pascal *ist* komisch!

;)

Verfasst: Donnerstag 19. Juni 2008, 16:44
von lunar
BlackJack hat geschrieben:@Lunar: Das stimmt zwar, aber deswegen würde ich Delphi nicht als Einser-Offset-Sprache bezeichnen.
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.

Verfasst: Donnerstag 19. Juni 2008, 17:54
von Karl
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:

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)
Erweitert die Klasse `list` ganz einfach um die Möglichkeit, selbst den Startindex zu bestimmen.

Verfasst: Donnerstag 19. Juni 2008, 18:14
von EyDu
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.

Verfasst: Donnerstag 19. Juni 2008, 18:22
von Karl
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.
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?
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.

Verfasst: Freitag 20. Juni 2008, 12:54
von sma
Der Streit, ob 0 oder 1 ist alt.

Stefan

Verfasst: Freitag 20. Juni 2008, 13:10
von Karl
sma hat geschrieben:Der Streit, ob 0 oder 1 ist alt.

Stefan
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

Verfasst: Freitag 20. Juni 2008, 13:17
von sma
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

Verfasst: Freitag 20. Juni 2008, 13:27
von Karl
sma 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
Naja vielleicht schon nett, aber ich bin vielleicht einfach zu dumm dazu :)
Danke für den Link