Seite 1 von 2

Verfasst: Sonntag 4. November 2007, 15:28
von lunar
Nicht, dass das schlecht wäre, denn was du bisher so über deinen Code verraten hast, war diese wohl gelinde gesagt einfach mies.

Verfasst: Montag 5. November 2007, 12:33
von EyDu
BlackJack hat geschrieben:Es funktioniert nicht so einfach wenn man aus einer inneren Schleife an den Anfang springen möchte.
Naja, dann löst man es allgemein eben mit einer Exception (zumindest man möchte wirklich miesen Code erzeugen :-) ):

Code: Alles auswählen

while 1:
    try:
       <code>
        if foo:
            raise ContinueException()
        <code>
        irgendwann:
            break
    except ContinueException:
        pass

Verfasst: Montag 5. November 2007, 22:55
von mq
Naja, hin und wieder kann goto praktisch sein, dass viele Leute es absolut verteufeln, halte ich fuer einen Fehler. Aber stimmt schon, meistens weist es auf schlechte Codestruktur hin.

Wusstet ihr, dass beim simplen Starten eines Python-Interpreters mehrere tausend mal goto ausgefuehrt wird?

Verfasst: Montag 5. November 2007, 23:22
von CM
mq hat geschrieben:Wusstet ihr, dass beim simplen Starten eines Python-Interpreters mehrere tausend mal goto ausgefuehrt wird?
Es gibt aber einen kleinen Unterschied zwischen C und Python ...

Im Übrigen hoffe ich nicht, daß goto bei mir tatsächlich tausende Male beim Start aufgerufen wird - wird nämlich meist zum Errorhandling eingesetzt.

Verfasst: Dienstag 6. November 2007, 13:23
von Leonidas
mq hat geschrieben:Naja, hin und wieder kann goto praktisch sein, dass viele Leute es absolut verteufeln, halte ich fuer einen Fehler.
Ich nicht. Mir fehlt es in Python nicht, dir etwa? Das ist ähnlich wie das `global` Keyword: man braucht es nicht, und da es da ist muss man Leuten die Benutzung dessen oft ausreden, weil sie es einfach bedenkenlos nutzen.

Verfasst: Dienstag 6. November 2007, 13:53
von Zap
mq hat geschrieben:Wusstet ihr, dass beim simplen Starten eines Python-Interpreters mehrere tausend mal goto ausgefuehrt wird?
Ne, wusste ich noch nicht. Mir ist beim portieren des CPython-Interpreters zumindest nichts deartiges aufgefallen. Würde gerne die Sourcen dazu sehen. Kann mir das irgendwie nur schwer vorstellen, da auch in C Goto zurecht sehr verpöhnt ist. Oder meinst du die vielen defines in den C-Sourcen?! Das ist kein Goto...

Verfasst: Dienstag 6. November 2007, 14:01
von Leonidas
Vielleicht sind ja die Assembler-Sprunganweisungen gemeint. Aber ich finde nicht dass das zählt, denn der Interpreter ist nicht in Assembler geschrieben und welchen Code der Compiler letztendlich erzeugt ist vollständig egal.

Verfasst: Dienstag 6. November 2007, 14:22
von BlackJack
Nein es sind schon ``goto``\s gemeint. Die werden bei CPython oft benutzt um in Fehlerfällen ans Ende zu einer Fehlerbehandlung zu springen um die Verschachtelungstiefe geringer zu halten.

Der (gute) Einsatzzweck von ``goto`` ist da also der gleiche wie Ausnahmebehandung in höheren Sprachen. Das ist ja auch ein unbedingter Sprung aus der verschachtelten Kontrollfluss-Struktur heraus.

Verfasst: Dienstag 6. November 2007, 14:35
von keppla
Der (gute) Einsatzzweck von ``goto`` ist da also der gleiche wie Ausnahmebehandung in höheren Sprachen.
Womit es dann aber in jeder sprache, die (subjektiv) höher als c++ angesiedelt ist, keine Rechtfertigung für ein goto sein kann, dank Exceptions.
Also eher: es gibt in c gute Gründe für goto, nicht, es gibt gute Gründe für goto.
Achja, noch cooler wäre ja ein comefrom ;)

Verfasst: Dienstag 6. November 2007, 14:47
von Leonidas
keppla hat geschrieben:Also eher: es gibt in c gute Gründe für goto, nicht, es gibt gute Gründe für goto.
Mag jemand Exceptions für C haben? ;)

Verfasst: Dienstag 6. November 2007, 15:27
von keppla
wow. das ist schon etwas unheimlich...