GOTO gilt immer noch als schädlich?

Jeder ist sich bewusst von Dijkstra Briefe an die Redaktion: go to statement considered harmful (auch hier .html-Transkript und hier .pdf) und es hat einen gewaltigen push seit dieser Zeit meiden die goto-Anweisung, Wann immer möglich. Obwohl es möglich ist, verwenden Sie goto, um zu produzieren wartbaren, weitläufige code, es bleibt dennoch in moderne Programmiersprachen. Auch der fortgeschrittene Fortsetzung control-Struktur in Schema beschrieben werden kann, wie ein anspruchsvolles springen.

Welche Umstände rechtfertigen die Verwendung von goto? Wann ist es am besten zu vermeiden?

Als follow-up-Frage: C # bietet ein paar Funktionen setjmp und longjmp, die Fähigkeit zu springen, die nicht nur innerhalb des aktuellen stack-frame, aber innerhalb des aufrufenden frames. Sollten diese berücksichtigt werden, so gefährlich, wie goto? Noch gefährlicher?


Dijkstra selbst bedauerte, dass Titel, für die er nicht zuständig war. Am Ende EWD1308 (auch hier .pdf), schrieb er:

Schließlich eine kurze Geschichte für den Datensatz.
Im Jahr 1968, der Communications of the ACM
veröffentlicht einen text von mir unter die
Titel "Die goto-Anweisung als
schädlich
", welche in späteren Jahren würde
werden am häufigsten verwiesen wird,
leider, jedoch, oft von Autoren
wer hatte nicht mehr gesehen, als seine
Titel, die zu einem Grundpfeiler
mein Ruhm, indem er eine Vorlage: wir
würde sehen, alle Arten von Artikeln unter
der Titel "X als schädlich" für
fast alle X, darunter eine mit dem Titel
"Dijkstra als schädlich". Aber
was war passiert? Ich hatte eingereicht
Papier unter dem Titel "Fall gegen
die goto-Anweisung
", die im Auftrag
um die Geschwindigkeit der Veröffentlichung, die
editor geändert hatte, in einem "Brief an
der Editor", und in dem Prozess, den er hatte
einen neuen Titel mit seiner eigenen
Erfindung! Der editor wurde Niklaus
Wirth.

Einer gut durchdachten klassischen Papier über dieses Thema, aufeinander abgestimmt sein, dass der Dijkstra -, ist Structured Programming with go to Statementsvon Donald E. Knuth. Lesen hilft, wieder Kontext und eine nicht-dogmatische Verständnis des Themas. In diesem Papier, Dijkstra ' s Meinung zu diesem Fall berichtet, und ist sogar noch stark:

Donald E. Knuth: ich glaube, dass durch die Präsentation eines solchen
Ansicht bin ich im Grunde gar nicht uneins
scharf mit Dijkstra ' s Ideen, da
er schrieb vor kurzem die folgenden:
"Please don' T fallen in die Falle
zu glauben, dass ich bin furchtbar
dogmatical über [gehe zu
Anweisung]. Habe ich das unangenehm
das Gefühl, andere machen ein
religion, aus der es, als wenn die
konzeptionelle Probleme der Programmierung
konnte gelöst werden durch einen einzigen trick, mit
eine einfache form der Codierung Disziplin!
"

InformationsquelleAutor der Frage | 

Schreibe einen Kommentar