Всім відомо про Дейкстри Листи до редакції: перейти на заяву вважається шкідливим (також тут .html транскрипта і тут .pdf) , і там був грізний поштовх з того часу , щоб відмовитися від заяви Гото щоразу , коли це можливо. Хоча можна використовувати goto для створення нездійсненного, розповсюдженого коду, проте він залишається в сучасних мовах програмування . Навіть вдосконалену структуру управління продовженням у схемі можна охарактеризувати як досконалу гото.
Які обставини обумовлюють використання goto? Коли найкраще уникати?
Як відповідне запитання: C надає пару функцій, setjmp та longjmp, які забезпечують можливість переходу не тільки в поточний кадр стека, але і в будь-який з кадрів виклику. Чи слід вважати їх такими ж небезпечними, як гото? Більш небезпечний?
Сам Дейкстра пошкодував того титулу, за який не відповідав. Наприкінці EWD1308 (також тут .pdf) він написав:
Нарешті коротка історія для запису. У 1968 році повідомленнями ОСБ було опубліковано мій текст під назвою " Заява Goto вважається шкідливою ", на яку в наступні роки найчастіше посилаються, на жаль, часто автори, які бачили не більше, ніж його заголовок, який став наріжним каменем моєї слави, ставши шаблоном: ми побачимо всілякі статті під заголовком "X вважаються шкідливими" майже для будь-якого X, включаючи одну під назвою "Dijkstra вважається шкідливою". Але що сталося? Я подав документ під заголовком " Справа проти заяви goto", який, щоб пришвидшити його публікацію, редактор змінив на" лист до редактора ", і в процесі цього він дав йому нову назву власного винаходу! Редактором був Ніклаус Вірт.
Добре продуманий класичний документ на цю тему, який повинен відповідати темі Дійкстри, - це Структурне програмування з переходом на заяви Дональда Е. Кнута. Читання обох допомагає відновити контекст та не догматичне розуміння теми. У цій роботі повідомляється думка Дійкстри щодо цієї справи і є ще сильнішою:
Дональд Е. Кнут: Я вважаю, що, висловлюючи таку точку зору, я насправді різко не погоджуюся з ідеями Дейкстри, оскільки він нещодавно написав таке: "Будь ласка, не потрапляйте у пастку вважати, що я страшенно догматичний щодо [ перейдіть до висловлювання]. У мене незручно відчувати, що інші роблять із цього релігію, ніби концептуальні проблеми програмування можна вирішити єдиним фокусом, простою формою дисципліни кодування! "
goto
.