Tout le monde est au courant des lettres de Dijkstra à l'éditeur: allez à la déclaration considérée comme nuisible (également ici la transcription .html et ici .pdf) et il y a eu un formidable effort depuis ce temps pour éviter la déclaration goto chaque fois que possible. Bien qu'il soit possible d'utiliser goto pour produire du code tentaculaire incontrôlable, il reste néanmoins dans les langages de programmation modernes . Même la structure de contrôle de continuation avancée de Scheme peut être décrite comme un goto sophistiqué.
Quelles circonstances justifient l'utilisation de goto? Quand est-il préférable d'éviter?
Comme question de suivi: C fournit une paire de fonctions, setjmp et longjmp, qui offrent la possibilité de passer non seulement dans le cadre de pile actuel mais dans n'importe quel cadre appelant. Devraient-ils être considérés aussi dangereux que goto? Plus dangereux?
Dijkstra lui-même regrettait ce titre, dont il n'était pas responsable. À la fin de l' EWD1308 (également ici .pdf), il a écrit:
Enfin une petite histoire pour le disque. En 1968, les communications de l'ACM ont publié un de mes textes sous le titre " La déclaration goto considérée comme nuisible ", qui, dans les années suivantes, serait le plus souvent référencée, malheureusement, souvent, par des auteurs qui n'en avaient pas vu plus que son titre, qui est devenu une pierre angulaire de ma renommée en devenant un modèle: nous verrions toutes sortes d'articles sous le titre "X considéré comme dangereux" pour presque tous les X, y compris un intitulé "Dijkstra considéré comme dangereux". Mais que s'était-il passé? J'avais soumis un document sous le titre " Un cas contre la déclaration goto", qui, afin d'accélérer sa publication, était devenu une" lettre au rédacteur en chef "et, ce faisant, il lui avait donné un nouveau titre de sa propre invention! Le rédacteur en chef était Niklaus Wirth.
Un article classique bien pensé sur ce sujet, à rapprocher de celui de Dijkstra, est la programmation structurée avec go to Statements , de Donald E. Knuth. La lecture permet à la fois de rétablir le contexte et une compréhension non dogmatique du sujet. Dans cet article, l'opinion de Dijkstra sur ce cas est rapportée et est encore plus forte:
Donald E. Knuth: Je crois qu'en présentant un tel point de vue, je ne suis en fait pas en désaccord profond avec les idées de Dijkstra, car il a récemment écrit ce qui suit: "Veuillez ne pas tomber dans le piège de croire que je suis terriblement dogmatique à propos de [la aller à la déclaration]. J'ai le sentiment inconfortable que d'autres en font une religion, comme si les problèmes conceptuels de la programmation pouvaient être résolus par une seule astuce, par une simple forme de discipline de codage! "
goto
.