• [^] # Re: goto ?

    Posté par . En réponse à la dépêche Sortie de GCC 4.5. Évalué à 5.

    Non, il a eu affaire à des pédagogues. Mes profs d'IUT m'expliquaient qu'ils préféraient des étudiants « vierges » (au sens informatique hein, bande de dégueulasses). Tout simplement parce que comme ça, il n'y avait aucune mauvaise habitude à redresser. Et justement, des élèves qui arrivent en cours et qui croient savoir ce qu'ils font (au hasard, en utilisant scanf sans en connaître tous les dangers), c'est relativement fréquent. Interdire certaines constructions dans le cadre d'un cours me semble plutôt intelligent. On forme des gens à structurer leurs programmes, et le goto casse la structure (parfois, c'est ce qui fait que ledit programme est plus clair à lire, mais c'est très très rare).

    Maintenant, d'un point de vue compilation, le goto est extrêmement dangereux dans 90% des cas:

    1/ Un goto qui revient en arrière, ça revient à faire une boucle, sans que le compilateur puisse facilement le deviner (enfin, si, mais non).
    2/ Un goto qui sort d'une structure de contrôle, c'est mal -- surtout si c'est une boucle. Ça empêche le compilateur de générer un code optimisé. Évidemment, s'il s'agit d'un truc du genre if (catastrope_détectée) goto CATASTROPHE; c'est différent, vu que ça revient à implémenter des exceptions... Mais dans tous les cas, c'est à réserver pour des utilisations « uniques ».
    3/ Un goto qui arrive en plein milieu d'une boucle, c'est criminel. Il faut pendre haut et court le mec qui fait ça.