• [^] # Re: Goto tabou

    Posté par (site web personnel) . En réponse au journal <3 goto. Évalué à 10. Dernière modification le 04 mars 2014 à 13:58.

    Il y a aussi plein de cas ou l'utilisation de macro, de pointeurs de #define et autre structures sont un problème. Oui, il doit être utilisé. Mais dans le cas de gnutls, de apple, goto n'est pas le problème comme certains essaye de le faire croire.

    Petit rapele historique (depuis mon commentaire du précédent journal à ce sujet):

    En 1965 Dijkstra écrit un article Go To Statement Considered Harmful. C'était avant l'invention du C, à une époque où GOTO était utilisé à la place de boucle ou de fonctions.
    En BASIC, il n'y avais pas d'accolades pour délimiter les IFs, donc on avais droit qu'a mettre un goto après

    18500 IF n = 0 THEN GOTO 19300

    C'est ce GOTO là qui est critiqué par Dijkstra, car il ne permet pas de facilement lire un programme.
    Le C, quant à lui, est un langage structuré qui possède des fonctions, des boucle et des blocs de contrôles. Le goto du C a toujours une utilisation, par exemple pour la gestions des erreurs. Cette utilisation du goto en C facilite la lecture du programme. Et ne doit pas être proscrite.

    C++ et les langages de plus haut niveau rajoutent encore plus d'abstraction et de couche, qui rendent l'utilisation de goto dans ces langages quasiment inutlie. En C++, je n'ai quasiment jamais utilisé goto. goto fait toujours partie du C++ pour des raison de compatibilité avec le C. (Et la compatibilité avec le C est à la fois la raison du succès du C++ et une grosse lacune)

    Mais en C l'utilisation de goto dans un programme est tout a fait normal (ou alors quel est le problème ?).

    Ensuite, de nos jours, des profs qui ont grandi à l'époque de Dijkstra et ne sont pas sorti de leur amphi depuis continues à dire que goto est le mal absolu. Et des étudiants lisent quelque part que goto qu'il ne connaissent même pas est harmfull et resent bloqués sur cette idée sans chercher à comprendre. Ensuite ces étudiants, qui ne touchent de toute façon plus jamais le C, viennent critiquer les autres sur linuxfr parce qu'ils utilisent goto en C.