Jeder kennt Dijkstras Briefe an den Herausgeber: Gehen Sie zu einer Aussage, die als schädlich angesehen wird (auch hier .html-Transkript und hier .pdf), und seitdem gab es einen gewaltigen Druck, die goto-Aussage nach Möglichkeit zu vermeiden. Mit goto können Sie zwar nicht wartbaren, weitläufigen Code erzeugen, dieser bleibt jedoch in modernen Programmiersprachen erhalten . Sogar die erweiterte Struktur zur Fortsetzung der Steuerung in Schema kann als hochentwickeltes Goto beschrieben werden.
Welche Umstände rechtfertigen die Verwendung von goto? Wann ist es am besten zu vermeiden?
Als Folgefrage: C bietet ein Paar von Funktionen, setjmp und longjmp, die die Möglichkeit bieten, nicht nur innerhalb des aktuellen Stapelrahmens, sondern innerhalb eines der aufrufenden Rahmen zu gelangen. Sollten diese als so gefährlich wie goto angesehen werden? Gefährlicher?
Dijkstra selbst bedauerte diesen Titel, für den er nicht verantwortlich war. Am Ende von EWD1308 (auch hier .pdf) schrieb er:
Zum Schluss noch eine Kurzgeschichte. 1968 veröffentlichten die Mitteilungen der ACM einen meiner Texte unter dem Titel " Die goto-Erklärung als schädlich ", auf den in späteren Jahren am häufigsten Bezug genommen wurde, leider jedoch häufig von Autoren, die nicht mehr davon gesehen hatten als seine Titel, der zu einem Eckpfeiler meines Ruhms wurde, indem er zu einer Vorlage wurde: Wir würden alle Arten von Artikeln unter dem Titel "X als schädlich angesehen" für fast jedes X sehen, einschließlich eines mit dem Titel "Dijkstra als schädlich". Aber was war passiert? Ich hatte ein Papier unter dem Titel " Ein Fall gegen die goto-Erklärung " eingereicht", der, um seine Veröffentlichung zu beschleunigen, in einen" Brief an den Herausgeber "umgewandelt worden war und ihm dabei einen neuen Titel seiner eigenen Erfindung gegeben hatte! Der Herausgeber war Niklaus Wirth.
Ein gut durchdachtes klassisches Papier zu diesem Thema, das mit dem von Dijkstra übereinstimmt, ist Structured Programming with go to Statements von Donald E. Knuth. Das Lesen hilft sowohl, den Kontext wiederherzustellen, als auch ein nicht dogmatisches Verständnis des Themas. In diesem Artikel wird die Meinung von Dijkstra zu diesem Fall berichtet und ist noch stärker:
Donald E. Knuth: Ich glaube, dass ich durch die Darstellung einer solchen Ansicht den Ideen von Dijkstra nicht scharf widerspreche, da er kürzlich Folgendes geschrieben hat: "Bitte geraten Sie nicht in die Falle, zu glauben, dass ich schrecklich dogmatisch gegenüber [dem gehe zu Aussage]. Ich habe das unangenehme Gefühl, dass andere eine Religion daraus machen, als ob die konzeptuellen Probleme der Programmierung durch einen einzigen Trick, durch eine einfache Form der Codierungsdisziplin gelöst werden könnten! "
goto
.