Todo mundo está ciente das Cartas de Dijkstra para o editor: vá para a declaração considerada prejudicial (também aqui transcrição .html e aqui .pdf) e houve um esforço formidável desde então para evitar a declaração goto sempre que possível. Embora seja possível usar goto para produzir um código constante e inatingível, ele permanece nas linguagens de programação modernas . Mesmo a estrutura avançada de controle de continuação no Scheme pode ser descrita como um goto sofisticado.
Que circunstâncias justificam o uso do goto? Quando é melhor evitar?
Como uma pergunta de acompanhamento: C fornece um par de funções, setjmp e longjmp, que fornecem a capacidade de ir não apenas dentro do quadro de pilha atual, mas dentro de qualquer um dos quadros de chamada. Devem ser considerados tão perigosos quanto ir? Mais perigoso?
O próprio Dijkstra lamentou esse título, pelo qual não era responsável. No final do EWD1308 (também aqui .pdf), ele escreveu:
Finalmente, uma pequena história para o registro. Em 1968, as Comunicações da ACM publicaram um texto meu sob o título " A declaração goto considerada prejudicial ", que em anos posteriores seria mais frequentemente referenciada, lamentavelmente, no entanto, muitas vezes por autores que não viram mais do que isso. título, que se tornou uma pedra angular da minha fama ao se tornar um modelo: veríamos todos os tipos de artigos sob o título "X considerado prejudicial" para quase qualquer X, incluindo um intitulado "Dijkstra considerado prejudicial". Mas o que tinha acontecido? Eu enviei um artigo com o título " Um caso contra a declaração goto", que, para acelerar sua publicação, o editor havia mudado para uma" carta ao editor "e, no processo, ele havia lhe dado um novo título de sua própria invenção! O editor era Niklaus Wirth.
Um artigo clássico bem pensado sobre esse tópico, a ser comparado ao de Dijkstra, é a Programação Estruturada com ir para Declarações , de Donald E. Knuth. A leitura ajuda a restabelecer o contexto e uma compreensão não dogmática do assunto. Neste artigo, a opinião de Dijkstra sobre este caso é relatada e é ainda mais forte:
Donald E. Knuth: Acredito que, ao apresentar tal opinião, não discordo totalmente das idéias de Dijkstra, pois ele escreveu recentemente o seguinte: "Por favor, não caia na armadilha de acreditar que sou terrivelmente dogmático sobre [o vá para a declaração]. Tenho a desconfortável sensação de que outros estão criando uma religião a partir dela, como se os problemas conceituais da programação pudessem ser resolvidos com um único truque, com uma forma simples de disciplina de codificação! "
goto
.