Diskussion:Sprunganweisung
Meines Wissens beschreibt Dijkstra auch Fälle in denen der Einsatz von GoTo sinnvoll sei. Hat irgendwer mal das komplette Dokument gelesen und kann das bestätigen bzw. negieren? Florian Rittmeier 12:44, 26. Aug 2005 (CEST)
Es gibt außerdem ein Papier von Tom di Marco, das den Nutzen des GOTO-Befehls bei der Fehlerbehandlung hervorhebt.
GOTO erhöht die Lesbarkeit
Den folgenden Satz habe ich aus dem Kapitel "Problematische Verwendung von Goto" entfernt: "In einigen Fällen, wie dem obigen C-Beispiel, kann ein Goto-Befehl die Lesbarkeit des Codes verbessern. Als wichtigste Regel gilt, nur aus einem Block und niemals in einen Block zu springen."
Hier sollte allgemein anerkanntes Wissen stehen. Wenn dieses wie hier kritisiert wird, dann gehört dazu schon eine Begründung. In dem C-Programm, das als Beispiel angeführt wird würde es vollkommen ausreichen den zu überspringenden Block mit einem else zu versehen. --16:31, 2. Okt 2006 (CEST)
Lesbarkeit
Ich glaube die folgenden Beispiele sollten klar machen dass goto gelegentlich die lesbarkeit erhöht. Zwar ist das alles geschmackssache, aber durchaus viele programmierer sehen gotos als probates mittel in einigen situationen an.
1 for(;;) { 2 switch(i) { 3 case foo: 4 break; 5 default: 6 // would like to break out to after line 8 7 } 8 }
1 bool break_for = false; 2 for(;;) { 3 switch(i) { 4 case foo: 5 break; 6 default: 7 break_for = true; 8 } 9 if( break_for ) break; 10 }
1 try { 2 for(;;) { 3 switch(i) { 4 case foo: 5 break; 6 default: 7 throw loop_breaker; 8 } 9 } 10 catch( const loop_breaker& ) { }
1 for(;;) { 2 switch(i) { 3 case foo: 4 break; 5 default: 6 goto end_of_for_loop; 7 } 8 } 9 end_of_for_loop:
andere Sprunganweisungen?
Wieso gibt nicht wenigstens ne Liste mit anderen. Es mag ja sein dass goto gekannt ist, aber der Artikel heißt ja nicht goto (Sprunganweisung) - und wenn es nur in C ist break oder continue - ich kann da leider nichts drüber schreiben, kenn ich nur vom hören-sagen, aber ich wollte eben was drüber lernen und stoße hier auf ne kleine Blockade. Grüße --WissensDürster 12:45, 24. Feb. 2009 (CET)
PS: zu denen von C steht sogar in den Wikibooks ein wenig - aber leider zu konkrete Beispiele - gesucht wird eine einfache Abstraktion b:C-Programmierung:_Sprachbeschreibung:_Anweisungen#Sprunganweisungen --WissensDürster 12:52, 24. Feb. 2009 (CET)
- Eine vollständige Liste mit anderen Sprungbefehlen wird es kaum geben und alle bekannteren Programmiersprachen verwenden (falls es überhaupt "wilde" Sprunganweisungen gibt) GOTO. Den Befehl gibt es seit Urzeiten - auch in Assembler. break ist ein schwieriges Thema, weil sie je nach Art der Programmiersprache manchmal Sprunganweisungen sind, manchmal aber auch nicht. Das muss man IMO entweder sehr ausführlich darstellen oder es führt zu mehr Verwirrung. z.B. in Java wird ein "break" vom Compiler ähnlich einem "return null;" umgesetzt und ist deshalb eher eine Abbruchbedingung. continue verhält sich zumindest nach Außen wie eine Sprunganweisung. -- Merlissimo 13:40, 24. Feb. 2009 (CET)
Also gibt es kein allgemein abstraktes Modell von Sprunganweisungen? Die Dinger aus C lassen sich so schön übersetzen, also das Sprung-Konzept Abbruch, Weiter, Gehe Zu Nach der hier angeführten Def wäre sowas wie break ja eh keine, weil sie nicht "springt" - continue auch nicht - und nichts was mir einfällt, d.h. der Artikel bezieht sich in Definition und Beispiel nur auf das (sooo bekannte) Beispiel goto ... das ist nicht grad sehr wissenhschaftlich. Schade drum. --WissensDürster 01:14, 26. Feb. 2009 (CET)
- Vielleicht sollte man Sprunganweisung wie das GOTO in Assembler behandeln. Das mit dem "springenden" Stackpointer ist ja schön anschaulich und man kann es 1:1 auf einige "normale" Programmiersprachen übertragen und hat eine klare Abgrenzung. Man würde zwar die Entwicklung in den letzen Jahren vernachlässigen, wäre aber IMO nicht schlimm. Bei den massenhaften Befehlssatzerweiterungen der letzten Jahre blickt ja eh keiner mehr durch. -- Merlissimo 02:26, 26. Feb. 2009 (CET)
Kann sein, kann nicht sein. Das mit den Assemblern hab ich schnell vergessen, muss das nächstes Jahr wiederholen 0:) Danke trotzdem --WissensDürster 11:15, 26. Feb. 2009 (CET)
- Mit den von Dir genannten aus C: Wenn das wie in Java funktioniert (würde ich mal vermuten), dann ist ein break oder ein continue auch eine Sprunganweisung - lediglich mit einem bereits beinhalteten Zielschlüssel. Und das return genauso. Oder?--Flash1984 01:32, 3. Mär. 2009 (CET)
Ja genau, und eigentlich wollte ich nur, dass das jemand genau so wie du es sagst auch im Artikel erwähnt. Ich kam ja nur zu dem Artikel weil ich mehr über break und continue lesen wollte... --WissensDürster 11:37, 3. Mär. 2009 (CET)
- Schau mal, ob der letzte Abschnitt (hab noch continue eingefügt) das ist, was Du meintest. Grüße --Flash1984 00:47, 4. Mär. 2009 (CET)
goto GOTO Goto GoTo
Hallo. Ich finde die überaus uneinheitliche Schreibung von goto GOTO Goto GoTo ein wenig komisch. Kann man bitte kurz abstimmen, wie das einheitlich geschrieben werden soll. Es kommt einfach zu oft vor, da kann man es nicht überall anders schreiben. Ich wäre für Goto der GoTo. Grüße --WissensDürster 18:08, 26. Feb. 2009 (CET)
- Dann ändere es doch einfach ab, dafür ist Wiki ja da ;-). Am sinnvollsten fände ich GoTo,weil dort eben die beiden Wortbestandteile am deutlichsten werden. Allerdings gibt es eben auch einige Sprachen, die bspw. ein GOTO oder goto verwenden. Nichtsdestotrotz: Ändere es doch einfach auf GoTo, dann sind wir schon zwei dafür und jeder andere sollte dagegen argumentieren (da es eher eine Formalie ist, sollte da ja nichts dagegen sprechen, oder?). Grüße --Flash1984 00:38, 2. Mär. 2009 (CET)
- GoTo ist aber kein richtiges Deutsch, weil Majuskeln im Wortinneren verkehrt sind. Oder sind Sie aus der Werbeabteilung? "Goto" ist m. E. die einzig annehmbare Schreibweise. --195.244.237.69 11:31, 10. Sep. 2009 (CEST)
Ok ich denke, alles ist nun auf GoTo geändert, außer natürlich die konkreten Verwendungen in den Programmiersprachen, da muss die Syntax natürtlich erhalten bleiben - aber für deutschen Sprachgebrauch und die intuitive Sinnerschließung ist GoTo gut geeignet, weil die Bestandteile eben schnell klar werden. GehZu. Grüße --WissensDürster 11:54, 4. Mär. 2009 (CET)
- Ich bin der Meinung, dass man Goto schreiben sollte. Das ist vernünftiges Deutsch und wird auch von anderen Autoren so verwendet.
Zum Beispiel: http://de.wikiquote.org/wiki/Niklaus_Wirth
--195.244.237.69 11:40, 10. Sep. 2009 (CEST)
- Goto ist meiner Meinung nach auch die beste Schreibweise im Deutschen. Ein Binnenmajuskel ist hier nicht notwendig oder üblich. --Fomafix 23:05, 10. Sep. 2009 (CEST)
Gelabelter Break?
Tut mir leid, aber ein break oder continue mit Marke, die nunmal keine Sprungmarke ist, weil sie nicht angesprungen wird, ist kein goto. Anderenfalls wäre alles goto, weil ja alles auf goto abgebildet wird, auch das implizite break-Kommando. --195.244.237.69 10:01, 10. Sep. 2009 (CEST)