Все знают о Dijkstra Письма в редакцию: перейдите к заявлению, которое считается вредным (также здесь.html расшифровка и здесь.pdf), и с того времени был ужасный толчок, чтобы избежать ответа когда это возможно. Хотя можно использовать goto для создания недостижимого, растягивающегося кода, он тем не менее остается в современных языках программирования. Даже усовершенствованная структура управления continuation в Схеме может быть описана как сложная версия.
Какие обстоятельства требуют использования goto? Когда лучше избегать?
В качестве дополнительного вопроса: C предоставляет пару функций, setjmp и longjmp, которые обеспечивают возможность перехода не только в текущий кадр стека, но и в любой из вызывающих кадров. Должны ли они считаться опасными, как goto? Более опасно?
Сам Дийкстра сожалел об этом титуле, за который он не был ответственным. В конце EWD1308 (также здесь.pdf ) он написал:
Наконец, рассказ для записи. В 1968 году связь ACM опубликовал текст моего доклада под название "Утверждение goto вредных", которые в последующие годы чаще всего ссылаются, к сожалению, часто авторами который больше не видел этого, чем его название, которое стало краеугольным камнем моя слава, став шаблоном: мы будут видеть все виды статей в название "Х считается вредным" для почти любой X, в том числе один под названием "Дейкстра считалась вредной". Но что произошло? Я представил документ под заголовком " Дело против утверждение goto", которое, чтобы для ускорения его публикации, редактор превратился в "письмо в редактор", и в этом процессе он учитывая его новое название изобретение! Редактором был Никлаус Вирт.
Хорошо продуманная классическая статья об этой теме, соответствующая значению Дийкстры, Структурированное программирование с переходом к заявлениям, Дональдом Э. Кнут. Чтение обоих помогает восстановить контекст и не догматическое понимание предмета. В этой статье высказывается мнение Дейкстры об этом случае и еще сильнее:
Дональд Э. Кнут: Я считаю, что, представив такой Я не на самом деле не согласен резко с идеями Дейкстры, поскольку он недавно написал следующее: "Пожалуйста, не попадайте в ловушку полагая, что я ужасно догматический [о выражение]. У меня неудобно чувствуя, что другие делают религия из него, как будто концептуальные проблемы программирования может быть решена одним трюком, путем простая форма кодирования!"