Un petit tour et puis s'en va

Posté par  (site Web personnel) . Modéré par Fabien Penso.
Étiquettes : aucune
0
9
août
2002
Rien à voir
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  (site Web personnel) . Évalué à 10.

    Sauf erreur, il me semble que pas mal de monde nous ont récemment quittés, disons dans les derniers mois. Est-ce qu'on arrive à un moment ou tous les dinos arrivent à un âge critique ? Ils auraient mieux fait d'attendre un peu avant de naître, ils auraient vécu plus longtemps :p
    • [^] # Re: hmm

      Posté par  . Évalué à 10.

      ben la on commence a enterrer tout les fondateurs de l'informatique un peu moderne, ils laissent tristemetn leurs place au jeunes :( merci a eu quand meme
      • [^] # Re: hmm

        Posté par  . Évalué à 10.

        C'etait un grand .. enfin un GRAND !
        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  (site Web personnel) . Évalué à 10.

    J'ai failli poster la news aussi, voyant qu'elle n'apparaissait pas. Je trouve qu'elle devrait passer en première page. On n'en parle étonnament pas beaucoup en plus.
  • # GO TO goto hell !

    Posté par  . Évalué à 10.

    Je ne sais pas si Edsger Wybe Dijkstra était contre un langage particulier, en tout cas une chose est sûre : il détestait l'instruction 'GO TO' et était farouchement opposé à son utilisation. Sur l'un des liens on peut trouver l'une de ses phrases à ce sujet :
    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  (site Web personnel) . Évalué à 10.

      Oui, il n'aimait pas les GOTO. C'est dans ce sens (programmation structurée) qu'il a travaillé sur le langage ALGOL.
      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  . Évalué à 10.

      J'avais oublie ce lien dans avec les deux bio ...
      http://amazan.online.fr/divers/101.htm#info(...)
    • [^] # Re: GO TO goto hell !

      Posté par  . Évalué à 10.

      Si je ne m'abuse, cette phrase lui est attribuée (de mémoire):

      "God is REAL, until explicitly declared INTEGER."
      • [^] # Ouh, c'est vieux tout ça..

        Posté par  . Évalué à 10.

        Celle la, j'ai eu du mal a comprendre.
        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  . Évalué à 1.

          Non, ça n'est pas BASIC, mais le bon vieux Fortran (vraisemblablement encore plus ancien que F77 bien que ce soit encore admis dans F77)

          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  (site Web personnel) . Évalué à 10.

      > Je ne sais pas si Edsger Wybe Dijkstra était contre un langage particulier,

      « 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  . Évalué à 10.

        ça répond à ta question ? :)
        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
        s/Moi qui suit/Moi qui suis/

        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  . Évalué à 10.

        Et voilà, encore quelqu'un qui va devenir mon idole après sa mort :-/

        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  . Évalué à 10.

        Personnellement, j'ai commencé à programmer en BASIC et j'ai pris beaucoup de plaisir à le faire. Il m'a été donné d'écrire des programmes relativement conséquents (serveurs Minitel spécialisés). Et je faisait également un usage massif du goto, du on x goto et consors.

        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  . Évalué à 10.

          C'est sûr que si t'est passé de BASIC à C, t'as pas dû capter le pb. Personnellement, ça fait seulement 1 an et demi que j'ai capté le problème, en passant à Smalltalk.
          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  . Évalué à -4.

          je ne sens pas mutilé mentalement

          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  . É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  . Évalué à 10.

          Pourquoi ne pas utiliser le Goto ? Simplement parce que une multitude de goto rend le code très difficile à suivre, ceux qui ont déjà débuggé une appli en asm peuvent en témoigner :)
          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  . Évalué à 8.

            C'est surtout qu'un while() ou autre intègre implicitement la notion de saut.

            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  (site Web personnel) . Évalué à 10.

              Je ne suis pas d'accord.
              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  . Évalué à 4.

              > C'est surtout qu'un while() ou autre intègre
              > 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  (site Web personnel) . Évalué à 10.

          Je serai beaucoup plus nuancé quant à l'utilisation du GOTO.
          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  . Évalué à 4.

            personnellement, jme rappelle avoir lu du code où il y avait à un certain endroit plusieurs boucles while imbriquées et des break un peu partout pour sortir dans la bonne boucle mais aussi plein de if bien sûr, sans oublier les conditions incompréhensibles. Enfin c'est dur à expliquer tellement c'était bordélique, j'ai du mettre 15 minutes à comprendre le truc (qui devait faire une page).
            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  (site Web personnel) . Évalué à 2.

              Pour ce style d'acrobaties, le break avec label de Java est une bonne idée : des GOTOs déguisés que l'on ne peut pas utiliser n'importe où. Et ça évite bien des IFs et des flags booléens pour shunter trois whiles imbriqués...
        • [^] # Re: GO TO goto hell !

          Posté par  . Évalué à -1.

          <mauvaise foi>
          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  . Évalué à -1.

            HS: quand je me relis, moi c'est le français que je n'arrive pas écrire correctement. (c:
          • [^] # Re: GO TO goto hell !

            Posté par  . Évalué à 8.

            <mauvaise foi>
            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  . Évalué à 5.

              Intéressant parce que je crois que nous touchons du doigt un problème récurrent des langages de programmation. Dans tous les langages que tu cites, tous (peut être à l'exception de Java) sont des langages impératifs sans réelles fondations mathématiques. Je ne crois pas à la différence que tu fais entre mathématiciens et codeurs, quand on programme on fait des maths consciemment ou non. D'ailleurs certains -je ne citerai pas de noms (c: - affirment que la véritable programmation c'est la preuve mathématique de programmes. Ce que l'on retrouve caché dans tous les langages qui supportent les assertions (extensions de C avec gnu-nana, Eiffel etc.), ce sont justement des équations (des équations logiques certes mais des équations).

              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  . Évalué à 5.

          Un exemple de couche où le goto est utilisé en ce moment est le noyou linux, voir par exemple http://lxr.linux.no/source/fs/read_write.c(...)
    • [^] # Re: GO TO goto hell !

      Posté par  (site Web personnel) . Évalué à 10.

      Plus exactement, il a écrit un article intitulé "GO TO considered harmful", qui a fait date.

      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  (site Web personnel) . Évalué à -10.

      GO TO sucks!! Il n'y a rien d'autre a dire. Ça va bien pour apprendre le basic quand on est gamin, mais pas plus.

      -1 passque j'ai rien à dire de mieux
  • # Ce n'est qu'un au revoir ...

    Posté par  . Évalué à 10.

    Comme beaucoup ici, j'ai appris à programmer en autodidacte à mon adolescence (enfin pré-adolescence) puis les études me poursuivant j'ai fini par mettre des noms et de la théorie sur mes connaissances en plus de les accroître. Dijkstra fait parti de ces noms, de ces inconnus illustres que tant de programmeurs ignorent (surtout grace aux sociétés et compagnies qui prétentent avoir créer l'informatique).

    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:

    Merci d'avoir contribuer à ce que je suis.
    • [^] # Re: Ce n'est qu'un au revoir ...

      Posté par  . Évalué à 10.

      J'adhère complètement à ce que tu viens d'écrire. Et je dirais de plus que nous ne devons jamais oublier que nous ne sommes que les rejetons de nos illustres pères.

      "Merci Monsieur Dijkstra"
    • [^] # Re: Ce n'est qu'un au revoir ...

      Posté par  . Évalué à 10.

      J'ai lu ses travaux, d'abord par curiosité et ensuite pour voir tout ce qu'il avait fait et c'est vraiment un grand homme parmis les grand. J'espere que d'autres personnes vont suivre et surtout suivre son exemple. C'est un grand homme (à mon propre avis) et il méritait une annonce ici.
      Ce n'est qu'un au revoir (peut-être pas dans toutes les mémoires...)
  • # Jour triste ;i(

    Posté par  . Évalué à 10.

    C'est un triste jour pour la science...On ne peut pas ne pas connaître Dijkstra si l'on fait des études en informatique...Je me suis d'ailleurs étonné à l'époque qu'on entend parler de lui pratiquement à chaque matière ! :) IA, Systèmes d'exploitation, Théorie des Langages, Réseaux ! :)

    Bref, un GRAND homme qui aura marqué l'histoire...
    • [^] # Re: Jour triste ;i(

      Posté par  . Évalué à 0.

      on reconnaît les grands hommes quand on fait des examens pour les étudiants à partir de leurs travaux.
    • [^] # Re: Jour triste ;i(

      Posté par  (site Web personnel) . Évalué à -3.

      Moi, j'en avais jamais entendu parlé :-/ Mais faut dire que la formation que j'ai faite, ne permettait pas de s'enrichir culturellement ... c'est moi qui ramenais la plus grande masse. Simplement parceque je lis beaucoup !

      -1 parceque j'me la pète :o)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.