Edsger Dijkstra est mort le 06 Août. C'était un des grands noms de l'informatique, connu par les étudiants grâce à son "algorithme du colporteur" qui permet de calculer le chemin idéal. Il a apporté sa pierre à l'édifice des sémaphores et de la logique, et est également connu pour sa lutte contre certains langages informatiques.
Aller plus loin
# hmm
Posté par Fabien Penso (site web personnel, Mastodon) . Évalué à 10.
[^] # Re: hmm
Posté par kael . Évalué à 10.
[^] # Re: hmm
Posté par let antibarbie = xp <- xp - 1 . Évalué à 10.
un peu comme les physiciens/mathematiciens/etc.. avaient leur 'Gauss', nous on avait notre Djikstra.
On a la releve avec nos petis francais qui font du OCaml :-)
# hmm
Posté par Damien Sandras (site web personnel) . Évalué à 10.
# GO TO goto hell !
Posté par C2RIK . Évalué à 10.
GO TO considered harmful. This means that the more GO TO statements there are in a program the harder it is to follow the program's source code.
GO TO est considéré nocif. Ce qui signifie que plus il y a de GO TO dans un programme plus il est difficile de parcourir les sources de celui-ci
Moi qui suit en train de bosser à partir de vieux sources en Fortran blindés de ces merdes, je confirme !
[^] # Re: GO TO goto hell !
Posté par G. R. (site web personnel) . Évalué à 10.
C'est le langage à l'origine de tous les langages de programmation modernes, en dehors des langages fonctionnels.
[^] # Re: GO TO goto hell !
Posté par la Fripouille Jackouille . Évalué à 10.
l'Algol ça ne date pas d'hier :
http://www.levenez.com/lang/history.html#01(...)
.
[^] # Re: GO TO goto hell !
Posté par Cedric L'HOMME . Évalué à 10.
http://amazan.online.fr/divers/101.htm#info(...)
[^] # Re: GO TO goto hell !
Posté par Olivier M. . Évalué à 10.
"God is REAL, until explicitly declared INTEGER."
[^] # Ouh, c'est vieux tout ça..
Posté par reno . Évalué à 10.
Ca date le BASIC!!!
Sinon comme vieux souvenir aussi: apres avoir un cour sur les sémaphores, j'ai eu un grand respect pour Dijkstra..
[^] # Re: Ouh, c'est vieux tout ça..
Posté par rom1 . Évalué à 1.
Voilà:
Lorsqu'il n'y a pas d'instruction 'IMPLICIT NONE' dans une subroutine, les variables n'ont pas besoin d'être déclarées (elles le sont implicitement) et leur type (real, integer) dépend de leur première lettre: [a-h] et [o-z] sont REAL, [i-n] sont INTEGER (valeurs exactes des bornes sujettes à caution).
Donc GOD commençant par un 'g' sera implicitement une variable de type 'REAL'. Sauf si on le déclare explicitement comme d'un autre type. Ou que l'on interdit la déclaration implicite (IMPLICIT NONE).
Évidemment, ça a moins de style de dire "'coincoin' est un réel sauf si on le déclare explicitement comme un entier." :) (d'ailleurs c'est 'coinco' , les variables n'ont que 6 caractères ! :)
[^] # Re: GO TO goto hell !
Posté par Benoît Sibaud (site web personnel) . Évalué à 10.
« It is practically impossible to teach good programming to students that have had a prior exposure to BASIC; as potential programmers they are mentally mutilated beyond hope of regeneration. »
http://www.digidome.nl/dijkstra_quotations.htm(...)
ça répond à ta question ? :)
[^] # Re: GO TO goto hell !
Posté par C2RIK . Évalué à 10.
Ca fait plus que ça :
ça faisait longtemps que je cherchais une signature qui me plaise, avec cette citation et celles sur ce lien j'ai de quoi faire !!
Je ne savais pas que cet homme avait aussi ce talent de créer d'aussi bons calembours.
Quel génie le monde vient de perdre !
J'en profite pour un
Ouf ça fait du bien !
--
FORTRAN: "The infantile disorder", by now nearly twenty years old, is hopelessly inadequate for whatever computer application you have in mind today: it is now too clumsy, too risky, and too expensive to use.
Edsger Wybe Dijkstra (Around 1982).
[^] # Re: GO TO goto hell !
Posté par Yusei (Mastodon) . Évalué à 10.
Bon moi j'prend cette signature:
Waiting is a funny activity: you can't wait twice as fast.
[^] # Re: GO TO goto hell !
Posté par Obsidian . Évalué à 10.
Aujourd'hui je programme principalement en langage C, et je ne sens pas mutilé mentalement.
Même si l'on peut largement débattre sur le sujet, je trouve que ce dernier est une guerre de chapelle aussi trollesque que le match Unix/Windows.
Il ne m'est jamais venu à l'idée d'utiliser le goto en langage C, par contre, en assembleur, on trouve le JMP et ses dérivés à tout les coins de rues, car c'est précisément eux qui implémentent les itérations dans les différents blocs définis dans les langages de plus haut niveau. Le goto n'a donc pas disparu de ces langages, il est simplement masqué.
La programmation structurée, comme la programmation orientée objet, n'est qu'un type parmi d'autres de représentation d'un problème en particulier.
Le goto, lui, a une raison d'être dans certaines couches, et pas dans d'autre.
Ce qui me gêne, c'est qu'aujourd'hui la plupart des professeurs inculquent à leurs élèves le fait qu'utiliser goto est un sacrilège, mais plus beaucoup de monde sait vraiment pourquoi. De fait, peu de gens sont encore capables de reconnaître les cas où il est indiqué.
Quant à la lisibilité, c'est aussi une affaire de goût. Je n'ai jamais eu de problème pour naviguer dans mes sources Basic. Lorsque l'on passe du BASIC avec des lignes ultra-denses au langage C avec quasiment une instruction par ligne et un espace occupé majoritairement par le vide des indentations et par les accolades, c'est aussi pertubant que de faire le chemin inverse. Pourtant, le langage C est à mille lieues d'être un mauvais langage !
Bref, je trouve ses arguments pas forcément sans fondement, mais peut-être un brin "unilatéral" (ce que laissait supposer, de toute façon, le corps de la news).
Amitiés à tous.
[^] # Re: GO TO goto hell !
Posté par Dugland Bob . Évalué à 10.
Le C++ et le Java avaient une grammaire trop proche du C pour que je n'y colle pas (par manque de culture).
En Smalltalk, nouvelle grammaire, nouvel état d'esprit (plus "frais"), y'a d'autres idées que la grammaire qui sont passées.
B. Meyer ne s'y trompait pas : "Beware of C Hackers", critiqué cependant par R. C. Martin.
Plus je discute sur la tribune, plus je me range à l'idée de B. Meyer quand même.
avec -1 on évite le troll velu ?
[^] # juste un détail
Posté par Dugland Bob . Évalué à -4.
Hem relis-toi et cherche l'erreur.
Il devrai toujours y avoir une part de doute en chacun de nous :-)
-1 c'est pas le sujet
[^] # Re: GO TO goto hell !
Posté par Étienne . Évalué à 10.
Il ne m'est jamais venu à l'idée d'utiliser le goto en langage C, par contre, en assembleur, on trouve le JMP et ses dérivés à tout les coins de rues, car c'est précisément eux qui implémentent les itérations dans les différents blocs définis dans les langages de plus haut niveau.
A priori (mais à priori seulement), le Basic c'est un langage de haut niveau, ce qui devrait permettre de ne pas utiliser le GOTO. Alors est-ce que la faute est au langage (certainement en partie), au programmeur (surement aussi) ou aux différents bouquin et tutoriaux qui veulent faire apprendre la programmation sans aucune rigueure (là aussi je pense qu'on peut y trouver une part d'explication)
Quant à la lisibilité, c'est aussi une affaire de goût. Je n'ai jamais eu de problème pour naviguer dans mes sources Basic
Dans ses propres sources non (si tant est qu'on puisse qualifier des sources utilisant le GOTO comme propres ;).
Etienne
[^] # Re: GO TO goto hell !
Posté par Dawm . Évalué à 10.
C'est bien parce que l'on a inventé des structures de haut niveau comme les while et autres for que l'on ne devrait plus utiliser le goto. Aprés, forcément, le code asm en est rempli puisque il n'y a pas de while/for/if et qu'un if n'est finalement qu'une suite d'instructions conditionné par un jz/jnz ou autres.
[^] # Re: GO TO goto hell !
Posté par Obsidian . Évalué à 8.
Maintenant ces structures de (plus) haut niveau présentent aussi leurs abbérations. Exemples:
En BASIC, puisque c'est principalement le langage incriminé, il existait dans certaines versions les instructions DO et LOOP qui permettaient de mettre en place une itération infinie, dont on ne sortait qu'avec un EXIT explicite.
- Rien de de plus qu'un goto, donc, excepté le fait que DO ... LOOP déclare une structure et occupe de la place dans la pile pour son fonctionnement.
- En C, on utilise majoritairement des while(1) pour réaliser des boucles infinies. Or, d'une part, ceux-ci sont en général "simplifiés" par les compilateurs (qui les transforment en JMP). et d'autre part, d'un point de vue mathématique et formel, un while(true) est en soi un non-sens. Exactement comme 1==1, dont il est ridicule d'attendre la fin de l'égalité, et plus encore d'y conditionner des actions.
Donc en ce sens, - et d'un point de vue formel -, je ne trouve pas le while(1) plus propre qu'un goto et pour être tout-à-fait franc, je me demande bien ce que Dijkstra en pensait ...
[^] # Re: GO TO goto hell !
Posté par G. R. (site web personnel) . Évalué à 10.
Un while(1) (ou apparentés) a une sémantique bien définie.
Alors qu'un goto n'a pas cette sémantique. Un while(1) est donc plus clair, et a une valeur pour le lecteur plus grande qu'un simple goto.
Par contre, je suis d'accord pour dire qu'il arrive parfois qu'un goto simplifie grandement le code, comme pour la gestion des erreurs (en fait, principalement pour les langages qui ne supportent pas les exceptions).
[^] # Re: GO TO goto hell !
Posté par Christophe GRAND (site web personnel) . Évalué à 1.
[^] # Re: GO TO goto hell !
Posté par Dawm . Évalué à 4.
> implicitement la notion de saut.
Nous sommes d'accord. Un while n'est rien d'autre qu'un :
- Etat de départ
- Début bloc d'instructions.
- Fin bloc d'instructions.
- Test de condition
- JZ/JNZ/JE/JNE/J[ce_que_vous_voulez] Début bloc
C'est donc bien pour ça qu'utiliser Goto dans un langage présentant des structures comme while/for et compagnie est dans 99% des cas un non-sens ou une incompréhension du langage par le programmeur.
Bon le basic c'est bien beau mais... on a fait quelques progrés depuis :). En plus le GOTO est plutôt mieux perçu dans un langage avec numérotation de lignes. Souvenirs du basic du CPC 6128 ;)
Quand au while (1), je ne peux qu'acquiescer. J'ai toujours trouvé ça très sale et "indigne" d'un langage aussi evolué que le C(++).
[^] # Re: GO TO goto hell !
Posté par Pierre Jarillon (site web personnel) . Évalué à 10.
J'ai écrit en 1970 mon premier programme en Fortran. Il est tellement bourré de GOTO que je suis incapable maintenant de le relire. Ah, il était sur des cartes perforées, et le compilateur créait le listing du programme.
Avec le Fortran 77 hybridé de 90 de HP, le GOTO est devenu rare mais son utilisation bien sentie permet d'éviter de dépasser 5 ou 6 niveaux d'indentation. La lisibilité de ces programmes est très bonne.
Pour clore le tout, j'ai écrit un programme en C qui utilise des goto à bon escient. C'est assez rare, ça ne m'est arrivé qu'une seule fois de les utiliser en 12 ans. Mais j'insiste, c'était une très bonne solution dans un cas précis.
Il en est de la programmation comme des méthodes de conception : Il ne faut pas sacrifier aux modes qui font que l'on rejette ce que l'on a adoré la veille. Le goto est à utiliser avec circonspection, son utilisation est réservée au traitement des exceptions et dans ce cas il peut s'avérer très précieux.
[^] # Re: GO TO goto hell !
Posté par phq . Évalué à 4.
Quand j'ai compris ce que faisait la boucle, jme suis dit (alors que j'avais appris à abhorrer les goto) que vraiment avec quelques goto, ça aurait plus naturel et plus lisible. Tout le code semblait en fait avoir été programmé avec l'idée d'éviter les gotos.
En fait si jme rappelle bien, c'était un programme d'exemple d'utilisation de la lib vorbis. Si ça intéresse quelqu'un d'aller voir, c'est decoder_example.c (comment que je dénonce :)
[^] # Re: GO TO goto hell !
Posté par Christophe GRAND (site web personnel) . Évalué à 2.
[^] # Re: GO TO goto hell !
Posté par Le_Maudit Aime . Évalué à -1.
le fait que de BASIC, tu n'ait pas évoluer que jusqu'à C, n'est-ce pas la preuve évidente de ce que disait ce saint homme ?
</mauvaise foi>
allez hop -1
[^] # Re: GO TO goto hell !
Posté par Le_Maudit Aime . Évalué à -1.
[^] # Re: GO TO goto hell !
Posté par Obsidian . Évalué à 8.
le fait que de BASIC, tu n'ait pas évoluer que jusqu'à C, n'est-ce pas la preuve évidente de ce que disait ce saint homme ?
</mauvaise foi>
Elle est facile :-)
Je me comprends: Je ne me suis pas arrêté au langage C non plus. J'ai utilisé toutes sortes de langages dont le C++, Java (et aussi accessoirement pas mal de shellscript et, Dieu me pardonne, du VB dans lequel on n'utilise plus non plus GOTO très souvent).
En ce qui concerne la relecture de sources, j'ai effectué le désassemblage et le commentaire du langage BASIC de mon 8-bit. Donc quelque chose qui à la base n'est même pas encore un source, et je ne me suis pas perdu.
J'y ai même vu pas mal d'astuces très intelligentes qui mériteraient, je pense, d'être enseignées. Donc je continue à penser qu'il s'agit surtout d'une question d'habitude.
Par contre, je pense que l'aversion de Dijkstra envers le goto est surtout dûe au fait qu'il abordait la programmation plus en mathématicien,ce qu'il était, qu'en "codeur". De fait, intégrer sous condition un bloc d'instructions entre accolades est un modèle qui colle très bien avec la théorie. Le goto, lui, ne sert qu'à décrire un des mécanismes primaires de fonctionnement des ordinateurs: On n'a jamais vu un goto dans une équation ...
[^] # Re: GO TO goto hell !
Posté par Le_Maudit Aime . Évalué à 5.
Quand tu dis On n'a jamais vu goto dans une équation, tu te trompes, cela existe bel et bien mais c'est justement par ce que ces équations engendrent des difficultées que l'on considère d'un mauvais oeil le goto et c'est justement pour cela qu'on été inventées les exceptions : avoir les avantages du goto sans les inconvénients.
[^] # Re: GO TO goto hell !
Posté par roland pistolero . Évalué à 5.
[^] # Re: GO TO goto hell !
Posté par Guillaume Laurent (site web personnel) . Évalué à 10.
D'un autre coté, 6 ans plus tard un autre gars lui a répondu avec un article contre-balançant son point de vue, sur le "GO TO structuré". Le gars en question s'appelle Donald Knuth.
[^] # Re: GO TO goto hell !
Posté par Korbinus (site web personnel) . Évalué à -10.
-1 passque j'ai rien à dire de mieux
# Ce n'est qu'un au revoir ...
Posté par Schwarzy . Évalué à 10.
Au départ d'un homme de cette valeur, je ne dirais qu'une seule chose, en m'excusant de ne pas l'avoir dite de son vivant:
[^] # Re: Ce n'est qu'un au revoir ...
Posté par One . Évalué à 10.
"Merci Monsieur Dijkstra"
[^] # Re: Ce n'est qu'un au revoir ...
Posté par Nicolas P . Évalué à 10.
Ce n'est qu'un au revoir (peut-être pas dans toutes les mémoires...)
# Jour triste ;i(
Posté par Daniel Biehle . Évalué à 10.
Bref, un GRAND homme qui aura marqué l'histoire...
[^] # Re: Jour triste ;i(
Posté par Le_Maudit Aime . Évalué à 0.
[^] # Re: Jour triste ;i(
Posté par LupusMic (site web personnel, Mastodon) . Évalué à -3.
-1 parceque j'me la pète :o)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.