Ankündigung
Einklappen
Keine Ankündigung bisher.
Goto in PHP6
Einklappen
Neue Werbung 2019
Einklappen
Dieses Thema ist geschlossen.
X
X
-
Welchen Overhead haben denn Schleifen oder Funktionen? (auf 41 Seiten hab ich jetzt echt keine Lust)
-
Zitat von register_globals Beitrag anzeigenFuer primitivere Programmiersprachen wie Batch-Ausfuehrung oder Assembler (bitte das primitiv nicht falsch verstehen) mag das Sinn machen
Zitat von register_globals Beitrag anzeigenWozu auch wenn es Schleifen und Funktionen gibt (grade die gibt es bei Batch und Assembler ja nur durch "goto" Konstrukte).
Donald Knuth Structured Programming with Goto Statements - Google-Suche
Einen Kommentar schreiben:
-
Zitat von Manko10 Beitrag anzeigenUm aus Schleifen herauszuspringen fände ich es sinnvoller, einen Parameter zu break hinzuzufügen, mit dem man regulieren kann, aus wie vielen übergeordneten Schleifen man herausspringen will. Also z.B. break 3 um diese und die beiden übergeordneten Schleifen abzubrechen.
Einen Kommentar schreiben:
-
Zitat von Manko10 Beitrag anzeigeneinen Parameter zu break hinzuzufügen, mit dem man regulieren kann, aus wie vielen übergeordneten Schleifen man herausspringen will. Also z.B. break 3
Einen Kommentar schreiben:
-
Das Goto sollte auf jeden Fall auf einen Codeblock beschränkt sein. Das willkürliche Springen durch den gesamten Code wäre einfach...ähh...schlecht.
Außerdem würde ich nicht sagen, dass es so unsauber ist. Sauber ist es vielleicht nicht, aber nicht so unsauber wie ein Goto. Immerhin kann man mit Goto leicht Spaghetti-Code erzeugen.
Einen Kommentar schreiben:
-
Aber das Ausführen mehrer Blöcke kann sehr praktisch sein und Redundanzen vermeiden. Deshalb ja eben das goto zum Anspringen anderer Labels im selben Switch.
Einen Kommentar schreiben:
-
Hi,
Das Durchfallen lassen bei Switches ist aber im Grunde auch so ein "unsauberes" Konstrukt wie ein goto.
Gruß Thomas
Einen Kommentar schreiben:
-
Um aus Schleifen herauszuspringen fände ich es sinnvoller, einen Parameter zu break hinzuzufügen, mit dem man regulieren kann, aus wie vielen übergeordneten Schleifen man herausspringen will. Also z.B. break 3 um diese und die beiden übergeordneten Schleifen abzubrechen.
Eine goto wäre meiner Meinung nach ziemlich unnötig. Bisher habe ich es immer geschafft, meinen Code so umzuformen, dass ich immer schön links bleibe.
Aus anderen Sprachen kenne ich noch ein Gosub, das nach der Ausführung wieder zurückkehrt. Also die entschärfte Version dessen. Aber auch nicht so das Wahre.
Das ausbleiben des Fallthroughs sehe ich mit gemischten Gefühlen. Ganz abgesehen davon, dass es Entwickler anderer Sprachen vewirrt (was aber relativ egal ist) nutze ich switch-Konstrukte oft bewusst mit eben diesem Fallthrough. Aber ich kenne mich in C# jetzt nicht genug aus, dass ich das beurteilen könnte. Vielleicht gibt es ja auch ein continue oder ein fall oder was weiß ich, um weiterzugehen.
Letztendlich ist das Springen in switches mit einem beliebigen Schlüsselwort aber etwas anderes als Goto (auch wenn es denselben Namen hat). Goto ist eine Anweisung, mit der man wild im Code hin- und herspringen kann. Wenn es sich aber wie in Java nur um Labels handelt, dann wäre es sogar ein akzeptables Konstrukt. Alles andere finde ich sinnlos und unnötig. Gefundenes Fressen für Anfänger und Schreiberlinge von Anfänger-Tutorials (eben die, die HTML-Tutorials schreiben, in denen Frames angepriesen werden).
Einen Kommentar schreiben:
-
Ich finde goto an manchen Stellen sehr praktisch. Richtig eingesetzt verringert es gerade unnötig komplizierten und verschachtelten Spaghetti-Code.
Nach etwas Zeit zum Eingewöhnen finde ich zum Beispiel auch die Lösung in C# gut, dass case Blöcke keinen fall through mehr haben, sondern explizit mit goto angesprungen werden müssen. Und man kann auch nicht beliebig wild mit goto herumspringen, aber zum Beispiel aus (tief) verschachtelten Schleifen heraus. Und genau auf diese beide Fällen wird auch in #29287 hingewiesen.
Einen Kommentar schreiben:
-
Grummel...
Ich gebe dem Typen ja recht: "Code ohne goto ist nicht automatisch gut". Stimmt, hat er recht. "Man kann Code auch ohne for-Schleifen und switch-Statements programmieren": stimmt auch, man kann ja stattdessen while und if/elseif/else benutzen (auch wenn es in vielen Fällen Dummsinn wäre).
"Deshalb sollte man goto einführen, weil es manchmal der beste Weg ist": stimmt nicht, ebenso, wie man auf switch und while verzichten kann, kann man auf goto verzichten. goto hat dazu die blöde Eigenschaft, den Code unleserlich zu machen und das haben andere Sprachkonstrukte nicht oder nur bedingt (lange switches werden z.B. unleserlich, man sollte da eher if/elseif/else benutzen - goto macht den Code aber nicht nur unleserlich, sondern vor allem schwer verständlich und wartbar sowie fremdprogrammiererunfreundlich).
Manman, die Welt läuft rückwärts. Demnächst arbeiten wir auch wieder alle mit Windows 3.1, wenn das so weiter geht.
Einen Kommentar schreiben:
-
Habs gefunden... halleluja, wer brauchtn son Müll?
PHP Bugs: #29287: Request: Line labels and goto
Einen Kommentar schreiben:
-
Ich weiß es nicht. Aber soweit ich weiß, wurde diese Überlegung wieder verworfen und stattdessen auf Labels bei break-Anweisungen gesetzt (hoffe, ich habe das richtig mitbekommen).
Ich glaube, der Wunsch nach Goto kam aus der Community (wohl alles Oldschool-Programmierer), sollte allerdings nicht im konventionellen Sinne eingesetzt werden, sondern eher zu Fallunterscheidung. Wie die sich das vorgestellt haben, darfst du mich jetzt aber nicht fragen.
Aber selbst wenn die es einführen würden, müsste man es ja nicht benutzen.
Einen Kommentar schreiben:
Einen Kommentar schreiben: