Journal Du livre "Premiers cours de programmation en Scheme"

10
14
mar.
2011

Voici un bel ouvrage sur Scheme et la programmation en général paru récemment chez Ellipses : Premiers cours de programmation en Scheme de Jean-Paul Roy.

PCPS

Jean-Paul Roy est agrégé en mathématique et enseigne au département informatique de l’Université de Nice Sophia-Antipolis. Il enseigne depuis plusieurs années LISP et est connu des schémeurs francophone pour son Mémento du schémeur.

L’ouvrage qui nous occupe est, selon les dires même de l’auteur, le fruit attendu de ces nombreuses années à enseigner LISP et Scheme. Et ça se sent !

Les sujets traités sont nombreux :

  • bases du langage
  • création et animation d’images
  • récurrence (fonctions récursives enveloppées, récursion terminale)
  • Liaison statique, liaison dynamique, fonctions d’ordre supérieur...
  • les listes, en long, en large, et en travers ! Les tris, map etc.
  • Les arbres : parcours, création d’une machine virtuelle simple pour programmer avec les arbres, calcul formel etc.
  • Les macros
  • Prog impérative, objet
  • Entrée-Sortie : web et système
  • GUI
  • Analyse syntaxique
  • Interprétation d’un sous-ensemble de Scheme
  • Continuation
  • programmation paresseuse...

Les exercices sont encore plus nombreux ! On peut d’ailleurs trouver des corrections, complètes, partielles, ou de simples pistes sur le site dédié à l’ouvrage.

En lisant le livre, l’agrégation en mathématique de l’auteur est palpable. Si les chapitres sont lisibles sans de bonnes bases, la résolution d’un grand nombre d’exercices est impossible.

L’ouvrage a aussi ceci de particulier que bien qu’adressé, en partie, aux débutants en programmation, la forme donne vraiment le sentiment que l’on a plus à faire à un manuel pour étudiant accompagné d’un professeur que d’un tutoriel pour l’autodidacte.

Mais ce qui peut apparaître pour un défaut est aussi une qualité : si l’ouvrage est très progressif, la progression est rapide, simple, et ne se perd pas dans des explications didactiques inutiles.

Voilà un ouvrage excellent qui me semble adressé aux étudiants dans le cadre d’un cours universitaire (ou scolaire : terminale S etc.), ainsi qu’à toute personne ayant une expérience de la programmation.

La bibliographie est excellente : les ouvrages sont des références (Abelson, Backus, Bourbaki...) et ils sont peu nombreux, ce qui fait que l’on ne s’y noie pas.

Page personnelle de l’auteur : http://deptinfo.unice.fr/~roy/

Mémento du schémeur : http://deptinfo.unice.fr/~roy/schemeur1.html

Compléments au livre : http://deptinfo.unice.fr/~roy/PCPS/index.html

  • # Unice.fr

    Posté par (page perso) . Évalué à 3.

    Vous êtes copain avec Granet ?
    Vous enseignez dans la prestigieuse Polytech'Nice Sophia (alias P-Nice) ?

    Commentaire sous licence LPRAB - http://sam.zoy.org/lprab/

  • # le juste prix

    Posté par . Évalué à 3.

    Un livre avec Dr Racket en couverture j'ai pensé à une blague au début

    • [^] # Re: le juste prix

      Posté par (page perso) . Évalué à 3.

      Pour le nom "Dr Racket" ?

      J'ai oublié de préciser, au cas où, Dr Racket, anciennement PLT Scheme, est une implémentation très "populaire" de Scheme, "batteries included", orienté recherche et enseignement.

  • # Traditions !

    Posté par . Évalué à 3.

    Où puis-je télécharger cet ouvrage ?

    Quelle licence ?

  • # Par pitie

    Posté par . Évalué à -7.

    arretais avec ce langage. Ce n'est absolument pas un langage a enseigner niveau Terminal S ou premiere annee fac de science. Que cela fasse triper les enseignants je veux bien le concevoir mais pour 99% des etudiants c'est juste une perte de temps car ne correspondant en rien avec les langages qu'ils utiliseront dans l'avenir.

    Que certains s'amusent avec pas de problemes mais bon il faut aussi etre realiste et se rendre compte de plusieurs choses:

    • la premiere c'est que un jour les etudiants vont sortir de la fac et auront un boulot et il n'y a a peu pres aucun boulot autour du scheme,
    • la deuxieme c'est que les etudiants sont majoritairement feignant et n'apprendront pas, pour une tres grande majorite, un autre langage plus classique
    • enfin ce langage est un jouet mais ne sert a rien plus tard quelque que soit le cursus scientifique sauf pour une ultra-minorite, que ce soit en maths, en physique, en ingenieurie autre que informatique auncun de ces domaines n'utilisent ce langage de facon intensive et les etudiants ont autre chose a faire que de se taper l'apprentissage de multitude de langage juste pour le plaisir du prof. Ils ont besoin d'en maitriser un correctement et pas 2 ou 3 tres mal.

    Donc par pitie arretons cette heresie de mettre le scheme comme premier langage d'apprentissage!

    • [^] # Re: Par pitie

      Posté par . Évalué à 1.

      Juste par curiosité, que préconises-tu comme premier langage pour des gens qui n'ont pas forcément l'intention de devenir informaticiens ?

      À priori, si on exclue les langages ostensiblement fonctionnels, je pencherais pour ruby ou python, mais je vois des inconvénients aux deux comme langage d'apprentissage.

      • [^] # Re: Par pitie

        Posté par (page perso) . Évalué à 2.

        Juste par curiosité, que préconises-tu comme premier langage pour des gens qui n'ont pas forcément l'intention de devenir informaticiens ?

        Pour un matheux OCaml est vraiment génial. Simple, rigoureux, multiparadigme (fonctionnel et séquentiel), portable et relativement simple. Personnellement j'ai appris la programmation avec en Prépa, et cela reste de loin un de mes langages préférés...

        • [^] # Re: Par pitie

          Posté par . Évalué à 5.

          Si Albert refuse Scheme, je n'ose imaginer ce qu'il pense d'OCaml comme premier langage...

      • [^] # Re: Par pitie

        Posté par . Évalué à 1.

        Cela depend des filiaires. Mais un langage tel que python comme langage "haut niveau" serait bien surtout que dans les langages de ce type c'est celui qui a le plus de bibliotheques adapte aux sciences (merci numpy, scipy et pylab).
        Dans les langages bas niveaux je pense que le mieux serait soit le fortran soit le C++. Le fortran pour des raisons historiques (le nombre de code tournant en fortran dans les domaines scientifiques est enorme), que c'est globalement un bon langage pour ce pour quoi il est fait (traduire des formules mathematiques et proteger le machine du scientific dangereux :) ) et le C++ car de nombreux codes recents l'utilisent (en particulier en nucleaire mais meme si c'est un bon langage je trouve qu'il est trop "subtil" et parfois tres difficile a comprendre si tu n'en fais pas tous les jours...).

        ps: speciale dedicace aux "moinsseurs" fous. Cela serait bien d'expliquer le pourquoi du "non pertinent" par rapport au sujet du journal du message au dessus a moins que vous ayez besoin d'un dictionnaire? (Je sais moi j'ai besoin d'un dico, d'un besherelle et d'une grammaire). pps: les doublons viennent d'un bug de linuxfr donc les caches ok c'est bon c'est normal c'est fait. Vouloir absolument les mettres a -10 je n'en vois pas trop la raison non plus. Pour votre information je fais parti des personnes ayant signale le bug 500 que l'on a actuellement.

        • [^] # Re: Par pitie

          Posté par . Évalué à 4.

          Déjà, je ne vois pas l'intérêt d'enseigner un langage bas niveau en terminale S, à des gens qui ne deviendront pas informaticiens à priori. Python ou Ruby sont largement plus abordables, par contre, ils sont assez complexes car intégrant beaucoup de fonctionnalités.

          Pour moi, pour initier les gens à la programmation, il faut un langage à grammaire simple, qui ne propose pas dix-mille façons de faire la même chose, et qui limite les possibilités d'erreurs en les signalant le plus tôt possible. Je suis donc pour la déclaration de variables, le contrôle automatique des bornes de tableaux, un seul paradigme de programmation, etc.

          • [^] # Re: Par pitie

            Posté par . Évalué à 0.

            Je suis d'accord pour la terminal S mais bon dans le cursus scinetifique cela serait bien d'avoir les deux je pense mais ni scheme ni ocaml qui sont des langages que seuls quelques fanatiques utilisent ou pour des raisons tres particulieres qui se justifie mais bon la fac est cense former les etudiants a des techniques de bases qui leur serviront dans le futur et eventuellement d'eveiller leur interet vers d'autres choses mais pas les forcer a apprendre des trucs que la majorite d'entre eux ne vont pas avoir besoin. Il y a une enorme difference entre mentionner ce genre de langage voir faire deux heures d'introduction dessus pour montrer ses avantages et le mettre comme premier langage dans le programme.

            • [^] # Re: Par pitie

              Posté par (page perso) . Évalué à 4.

              Le mardi 15 mars 2011 à 10:40 +0100, Albert_ a écrit :

              mais bon la fac est cense former les etudiants a des techniques de bases qui leur serviront dans le futur

              non ça c'est le but des filiere techniques.

              • [^] # Re: Par pitie

                Posté par . Évalué à -1.

                Donc la fac est cense forme les etudiants sur des trucs inutiles pour leur futur?

                Sacre vision de la fac...

                • [^] # Re: Par pitie

                  Posté par (page perso) . Évalué à 2.

                  Le mardi 15 mars 2011 à 18:49 +0100, Albert_ a écrit :

                  Donc la fac est cense forme les etudiants sur des trucs inutiles pour leur futur?

                  Où lis tu ça ?

        • [^] # Re: Par pitie

          Posté par (page perso) . Évalué à 1.

          Cela serait bien d'expliquer le pourquoi du "non pertinent" par rapport au sujet du journal du message au dessus a moins que vous ayez besoin d'un dictionnaire?

          Tu n'as pas complètement tort de râler : en pratique un commentaire n'est pas seulement moinssé quand il n'est pas pertinent mais aussi quand les moinsseurs ne sont pas d'accord, ce qui ne revient pas au même...

          GNU's Not Unix / LINUX Is Not Unix Xernel

          • [^] # Re: Par pitie

            Posté par . Évalué à 4.

            Ou quand la forme est immonde, agressive à souhait et sans accent. Alors lorsqu'en plus le fond montre une réflexion trop peu approfondie, qui a toute les chances de dégénérer en troll de bas étage déjà fait une centaine de fois, ça donne envie de voir disparaitre le post de l'écran.

            • [^] # Re: Par pitie

              Posté par . Évalué à -2.

              Ah j'oubliais ne pas etre d'accord avec une opinion c'est etre agressif...

          • [^] # Re: Par pitie

            Posté par . Évalué à -4.

            Ou quand la forme est immonde, agressive à souhait et sans accent. Alors lorsqu'en plus le fond montre une réflexion trop peu approfondie, qui a toute les chances de dégénérer en troll de bas étage déjà fait une centaine de fois, ça donne envie de voir disparaitre le post de l'écran.

        • [^] # Re: Par pitie

          Posté par (page perso) . Évalué à 2.

          Le mardi 15 mars 2011 à 10:12 +0100, Albert_ a écrit :

          Pour votre information je fais parti des personnes ayant signale le bug 500 que l'on a actuellement.

          et ça donne de la pertinence à tes propos ?

          • [^] # Re: Par pitie

            Posté par . Évalué à 1.

            Cela explique que j'ai fait les mutlipostages en raison d'un bug de linuxfr point barre et rien de plus. Apres considere mes propos sur le sujet comme "impertinent" je veux bien mais comme "non pertinent" (traduire "hors sujet" cela m'etonnera toujours mais bon cela vous permet de vous defouler et de liberer votre testoterone!)

            • [^] # Re: Par pitie

              Posté par (page perso) . Évalué à 2.

              NoNo< a fait en sorte d'enlever le multipost, en espérant que ça ne joue pas trop sur ton karma d'ici demain :D

              • [^] # Re: Par pitie

                Posté par . Évalué à 1.

                Si j'en avais eu quelques choses a faire de mon karma je n'aurai pas troller comme un porc sur scheme le plus beau langage de la terre... :)

    • [^] # Re: Par pitie

      Posté par . Évalué à 10.

      Tu as raison! Faut interdire aussi les cours de latin à ceux qui veulent étudier la littérature, plus personne ne parle le latin aujourd'hui. Et aux pianistes de répéter des gammes, ils ne les présenteront jamais en concert. Et aux footballeurs de faire des abdos pendant leur entraînement, tu les vois faire ça pendant un match?

      Scheme n'est effectivement (à ma connaissance) pas un langage très utilisé en dehors des sphères universitaires, mais l'idée n'est pas de programmer avec, juste de te montrer qu'il y a d'autres approches que les paradigmes classiques objet ou impératif. Et de t'ouvrir à d'autres modes de réflexion dans l'approche d'un problème.

      En fait, je suis même d'accord avec certains des points que tu évoques, mais pas avec l'impératif par lequel tu commences ton intervention (pour peu que c'en soit bien un: à propos de langage, tu pourrais te mettre au français écrit correctement: "arraitais avec ce langage", ça ne fait pas seulement mal aux yeux, ça rend ta phrase difficile à comprendre. Tout comme les langages informatiques, les langues naturelles ont une syntaxe à respecter).

      • [^] # Re: Par pitie

        Posté par . Évalué à -2.

        Mais oui bien sur c'est ce que j'ai dit... Enfin le jours ou la fac francaise fabriquera autre chose que des chomeurs cela sera bien. C'est amusant comme le scheme est souvent enseigne en fac mais absolument jamais en ecole de prepa...

        • [^] # Re: Par pitie

          Posté par . Évalué à 2.

          Rares sont les écoles formant des informaticiens qui n'abordent pas au moins un langage fonctionnel...

          • [^] # Re: Par pitie

            Posté par . Évalué à 2.

            c'est pour cela que j'ai bien precise que je ne parlais pas des cursus d'informaticien... car la je considere que c'est normal et necessaire!

        • [^] # Re: Par pitie

          Posté par (page perso) . Évalué à 1.

          Mapple comme premier langage de programmation pour tous ? Parce que en premier cycle de prépa, c'est ce que je me suis tapé y a pas si longtemps...

        • [^] # Re: Par pitie

          Posté par . Évalué à 1.

          C'est amusant comme le scheme est souvent enseigne en fac mais absolument jamais en ecole de prepa...

          Peut-être parce qu'en prépa il y a un programme fixé à respecter et qui ne donne le choix qu'entre 2 langages : Pascal et Caml Light. Et Maple ou un truc du genre en cours de maths, mais de là à appeler ça de la programmation...

          Et de toute façon, l'informatique en prépa, c'est pas des cours de programmation. C'est des cours d'algorithmique.

        • [^] # Re: Par pitie

          Posté par . Évalué à 3.

          C'est clair que c'est probablement grâce à l'enseignement de Pascal encore en vigueur dans certaines lycées de classes préparatoires que les élèves ne seront pas au chômage plus tard.

          Face à ça, le Sheme à la Fac n'a qu'à bien se tenir.

          • [^] # Re: Par pitie

            Posté par . Évalué à -2.

            Au moins avec le pascal tu apprends la facon de programmer qui est majoritairement utilise dans l'industrie et ailleurs et non pas la programmation fonctionnelle qui est tres bien mais que tres peu de personne n'utilise.

            • [^] # Re: Par pitie

              Posté par (page perso) . Évalué à 4.

              C'est une blague ?

              Pascal c'est sympa, mais bonjour la rigidité !

              Enfin, passons. Je vous rappelle que la programmation fonctionnelle est en train de plus en plus d'investir les "gros" langages industriels (Java et C# en somme) pour des raisons de besoins précisément.

              Ne croyez-vous pas que vous êtes simplement à la masse ?

              • [^] # Re: Par pitie

                Posté par (page perso) . Évalué à 5.

                C'était pas si mal le Pascal. Maintenant, les L1 à Nantes font du Javascript pour « mieux coller à la réalié ». Un désastre.

              • [^] # Re: Par pitie

                Posté par . Évalué à 7.

                La rigidité, dans un premier langage, c'est plutôt un plus.

                • [^] # Re: Par pitie

                  Posté par (page perso) . Évalué à 0.

                  Mon premier langage universitaire, c'était l'Ada (avant, je m'étais auto-formé sur du Basic). Et j'en ai plutôt de bons souvenirs… Je suis de ceux qui pensent que la rigidité, pour un premier langage, c'est plutôt un plus.

    • [^] # Re: Par pitie

      Posté par (page perso) . Évalué à 2.

      Lisp mérite d'être appris car sa connaissance approfondie est une expérience très éclairante, qui fera de vous un bon programmeur pour le restant de vos jours, même si vous n'utilisez jamais beaucoup le langage Lisp lui-même.

      Le mieux est de les apprendre tous les quatre : Python, C, Perl et Lisp. Outre qu'il s'agit des langages les plus importants pour les hackers, ils représentent des approches très diverses de la programmation, et chacun d'eux vous sera profitable.

      E.S.R. : "Comment devenir un hacker." http://www.freescape.eu.org/eclat/3partie/Raymond2/raymond2txt.html

      GNU's Not Unix / LINUX Is Not Unix Xernel

      • [^] # Re: Par pitie

        Posté par (page perso) . Évalué à 2.

        N.B.: Il semble que cette traduction ne soit pas très fraîche. Dans la nouvelle version, ESR a ajouté Java et C++ :

        It's best, actually, to learn all five of Python, C/C++, Java, Perl, and LISP.

        GNU's Not Unix / LINUX Is Not Unix Xernel

      • [^] # Re: Par pitie

        Posté par . Évalué à 0.

        Justement ici je ne parle pas des futurs informaticiens mais des personnes qui considere un langage informatique comme un outils et non un but. Est-ce que l'on demande a un informaticien d'etre un specialiste en physique des plasma? Je ne crois pas alors pourquoi un physicien devrait lui connaitre tous les differents types de langages et methodes de programmation? Si cela l'interesse il les apprendra tout seul sinon il utilisera l'outil qu'il connait bien et maitrise pour faire son veritable metier ... de la physique!

        • [^] # Re: Par pitie

          Posté par (page perso) . Évalué à 4.

          Et où vois-tu qu'on est obligé, à cause de ce bouquin, d'apprendre le Scheme en premier langage à de futur physiciens ?

          Il faut boire de la tisane et faire du yoga!

        • [^] # Re: Par pitie

          Posté par (page perso) . Évalué à -1.

          Qui parle d'informaticiens ? Un physicien doit être un bon hacker s'il veut maîtriser l'outil informatique qu'il utilise.

          GNU's Not Unix / LINUX Is Not Unix Xernel

          • [^] # Re: Par pitie

            Posté par . Évalué à 1.

            n'importe quoi mais alors n'importe quoi. C'est comme si tu disais que un conducteur devrait etre un mecanicien pour savoir conduire.

            De plus j'ai bien dit qu'il devait savoir se servir d'un langage et que le scheme est absolument inexistant dans la physique, les maths et les autres matieres scientifiques que l'informatique. Le python, le fortran et le C++ ne le sont pas inexistants eux loin de la (et je ne parle meme pas de matlab, mathematica, maple ou pire excel...). Apprendre un truc a des personnes qui ne l'utiliseront jamais car RIEN n'existe pour dans leur metier c'est totalement inutile. Que ces personnes s'y interessent et l'apprenne par eux meme ok mais qu'ils soit forces a l'apprendre et totalement stupide, contre productif et va, a mon avis, contre la mission de l'universite qui est de former des gens pour qu'ils aient un travail et soit bon dans ce travail! Vos raisonnements justifient le fait que les entreprises ne veuillent pas recruter des "faqueux" car cela prend du temps (et de l'argent) de les former alors que des personnes sortant des ecoles d'ingenieurs n'ont presque pas besoin de formation.

            • [^] # Re: Par pitie

              Posté par (page perso) . Évalué à 4.

              L'informatique à l'université à aussi, et surtout, pour objectif de former des chercheurs en informatique. Et dans ce domaine, se contenter de Python et de Java...

              Votre propos n'est pas erroné en soi, il est juste hors-sujet.

              Oui Scheme n'est pas indispensable pour qui veut trouver un job demain. Mais ça n'est pas le sujet de l'ouvrage.

              • [^] # Re: Par pitie

                Posté par . Évalué à 1.

                c'est bien pour cela que je ne parle pas des filiaires specialise. Quel est le pourcentage d'etudiant qui va aller vers la filiaire informatique par rapport a ceux qui vont aller vers la biolo, la physique, les maths?

                Mais a cause de ce petit pourcentage il faut obliger les etudiants a se taper du scheme. C'est superbe completement a la masse mais superbe et bien caracteristique de l'education nationale qui ne regarde que son interet propre sans penser a ceux des eleves/etudiants.

                • [^] # Re: Par pitie

                  Posté par (page perso) . Évalué à 1.

                  Quel est le pourcentage d'etudiant qui va aller vers la filiaire informatique par rapport a ceux qui vont aller vers la biolo, la physique, les maths?

                  Il me semble que les étudiants en fac d'info ont déjà fait leur choix hein...

                  En fait, je ne vois pas bien de quoi vous voulez parler.

                  • [^] # Re: Par pitie

                    Posté par . Évalué à 1.

                    Le truc c'est que je connais des facs de science ou le scheme n'est pas enseigne en 3eme annee de fac mais dans le tronc commun "math, physique et info" voir pire en biolo aussi!

                    Comme je l'ai deja dit plein de fois mais les moinsseurs fou qui ne connaissent pas la definition du mot "pertinent" et ne font pas la difference avec les boutons facebook "j'aime"/"j'aime pas", cachent ces messages, apprendre un langage fonctionnel pour des informaticiens c'est normal et necessaire mais pour les autres c'est stupide car non utile et oui il faut voir le cote utile dans un cursus au minimum pour les matieres obligatoires!

                    • [^] # Re: Par pitie

                      Posté par . Évalué à 7.

                      Je suis partagé en ce qui concerne le langage à utiliser pour un premier cours d'algo/programmation. Il y a quelques années, j'aurais sans doute dit comme toi: Python, Perl (oui je sais, plein de gens trouvent ça caca, mais moi j'aime), ou Ruby me semblaient de bons candidats. Et puis à partir de 2004-2005 y'a eu la petite révolution des architectures multicœur. Et depuis je me dis que l'important, ce serait plutôt, quel que soit le langage, de donner de bonnes bases d'algorithmique à tout le monde (au moins pour les algos « fondateurs »), de façon à ce que le programme soit relativement facilement parallélisable. Selon moi cela signifie aborder les algorithmes un peu différemment, et ça passe par des langages différents. Par exemple, à l'université de Rice (Houston, TX), ils utilisent un langage appelé CnC (Concurrent Collection), qui « découple » la description de l'algorithme (les étapes de calcul) et la programmation proprement dite de chaque étape. CnC est juste un langage de description qui rend explicite les dépendances de données entre les étapes d'un algorithme. Suivant l'implémentation faite de CnC (Intel a l'implémentation de référence, écrite en C++, et qui repose sur Threading Building Blocks; Rice a une implémentation en Java de CnC; il existe une implémentation pour Haskell; etc.), on doit écrire l'étape dans un langage impératif, de façon séquentielle. L'idée est de rendre correctement modulaire ses algorithmes, mais de ne pas utiliser de constructions parallèles explicites (seules les dépendances de données, de type producteur-consommateur, sont exprimées).

                      Du coup, l'expert dans un domaine (physique, bio, méca...) exprime son algo sous forme d'étapes, programme lesdites étapes dans un langage « séquentiel » (C/C++, Java, Haskell, ...), et plus tard, un expert en optimisation (un infoteux donc) pourra, s'il le faut, optimiser chaque étape, forcer un ordonnancement spécifique entre les étapes pour rendre l'application plus rapide, etc.

                      Évidemment, ça ne résout pas le problème de « quel langage séquentiel choisir », mais ça force à repenser l'enseignement-même de l'algorithmie. Concernant Scheme, LISP, etc., j'ai vu des linguistes aller de la linguistique pure vers la reconnaissance vocale (donc au départ, pas de formation informatique à proprement parler), etc., et user de combinaisons entre Java et LISP assez étranges, et ils ne s'en portaient pas plus mal. Je pense que le problème de LISP ou Scheme n'est pas le langage (et il faudrait arrêter un peu de se focaliser là-dessus); il s'agit plus de la manière dont le langage est enseigné. Quand j'ai lu que le bouquin dont il est question ici a été écrit par un agrégé de maths, je me suis dit « encore un bouquin qui ne servira qu'aux informaticiens/théoriciens ». Je pense que ça me plairait beaucoup comme bouquin hein, c'est juste que je pense que beaucoup de gens (infoteux compris) détestent la programmation fonctionnelle parce qu'elle est enseignée par des gens un chouïa trop matheux. Bien sûr, les langages fonctionnels ont une origine qui s'y prêtent, mais quand on y pense, Fortran aussi, et pourtant ...

                      Bref. L'auteur de ce journal n'avait visiblement pas l'étudiant moyen en tête lorsqu'il a écrit sa bafouille, et pensait clairement à un futur informaticien. Et dans ce cadre-là, je pense que ce genre de bouquin passe parfaitement.

                      • [^] # Re: Par pitie

                        Posté par . Évalué à 2.

                        Juste un petit mot : il n’est pas dit que les architectures multi-cœurs restent importantes dans le calcul. Il y a un essor des GPU, qui utilisent une autre forme de parallélisation. Entre les deux les algorithmes ne doivent pas du tout être pensés de la même manière. D’ailleurs Python, par contrainte purement logicielle, se rapproche de cette manière de faire, où il faut penser son algorithme en terme de calculs sur des vecteurs, sans boucles. Donc un petit bémol sur ta conclusion : on devrait apprendre l’ensemble des méthodes, et commencer par accorder plus de place à l’enseignement de la parallélisation tant d’un point de vue théorique que pratique, la conception « classique » est sur-représentée par rapport à ce qu’on rencontre « dans la vraie vie », où le calcul parallèle est monnaie courante.

                        • [^] # Re: Par pitie

                          Posté par . Évalué à 5.

                          Juste un petit mot : il n’est pas dit que les architectures multi-cœurs restent importantes dans le calcul. Entre les deux les algorithmes ne doivent pas du tout être pensés de la même manière.

                          Les GPU n'utilisent absolument pas une autre forme de parallélisation. Ils imposent l'utilisation d'API ou d'extensions de langages spécifiques (Cuda/Stream/OpenCL), mais au final ça ne change pas grand chose (ce qui ne veut pas dire que certains codes ne devront pas être totalement récrits). Les concepts dont je parle (faire des algos « modulaires » et « parallel-friendly ») restent valable, qu'on parle de machines « many-core » façon GPU ou de vrais nœuds de calculs « many-cores » (avec 16 cœurs/32 threads ou plus sur un nœud). Alors oui les détails changent; oui, quand on utilise Cuda ou OpenCL, il faut déclarer explicitement les entrées et les sorties (par exemple); mais quelqu'un qui a eu à programmer avec MPI ou MPI+OpenMP a eu le même genre de problèmes auparavant. En fait si tu demandes aux chercheurs qui font du parallélisme ou de l'architecture et qui sont dans le coin depuis un moment, les GPU ne font finalement que remettre au goût du jour les architectures vectorielles des années 80-90.

                          De plus, on a un rapprochement GPU/CPU plus qu'évident depuis ces deux-trois dernières années entre AMD/ATI qui va produire un machin (Fusion) qui allie CPU et GPU, Intel et Knight's {Ferry|Corner|blah}, et Nvidia qui va produire des chips ARM pour accompagner ses GPU. Et je ne parle même pas des projets d'architectures et langages parallèles (genre les langages PGAS) financés par la DARPA...

                          on devrait apprendre l’ensemble des méthodes, et commencer par accorder plus de place à l’enseignement de la parallélisation tant d’un point de vue théorique que pratique

                          C'est vrai pour les informaticiens, beaucoup moins pour les physiciens/mathématiciens/biologistes/etc. Plus exactement, pour reprendre l'objectif de Rice avec CnC utilisé en première année de prog ou presque, il s'agit vraiment d'apprendre aux étudiants à correctement structurer leurs programmes, mais il n'est fait nulle part allusion au parallélisme à ce stade. Par contre les étudiants en info en fin de cycle de license/début de master (fin de cycle undergraduate) vont sans doute apprendre un peu plus d'algo/prog parallèle (là où d'habitude il s'agit de cours réservés aux grad students, donc master et plus).

                          • [^] # Re: Par pitie

                            Posté par . Évalué à 2.

                            C’est bien mon point, la façon de penser les algo. change entre vectorisation et parallélisation style multi-cœur. Pour caricaturer je dirai que dans le premier cas tu parallélises les boucles internes, dans le second la boucle externe.

                            Je n’ai pas assez d’expérience dans le domaine pour te sortir la théorie et parle plutôt de ressenti, mais par exemple, lorsque j’ai eu à travailler sur un intégrateur avec des particules (pos et vel), j’avais :

                            tant que t < t_final:  
                              forces = calcul_des_forces(1:N) // à l’intérieur : vectorisation  
                              pos(1:N) += vel(1:N)*dt // vectorisé  
                              vel(1:N) += forces(1:N)*dt // vectorisé  
                              t = t+dt  
                            

                            soit disant parallélisable en :
                            tant que t < t_final:
                              pour i de 1 à N : en parallèle :
                                force = calcul_la_force_particule(i)
                                pos(i) += vel(i)*dt
                                vel(i) += force(i)*dt  
                              t = t+dt
                            
                            Je ne pouvais pas paralléliser chacune des boucles vectorisées, car la parallélisation a un sur-coût trop important.

                            Ce n’est pas la même chose. Ici c’est trivial, mais sur un algo. un poil complexe, je ne vois pas comment : par exemple le parcours d’un arbre, je vois bien comment le paralléliser en donnant un sous-arbre à chaque process, par contre je ne sais pas comment le vectoriser. Ainsi il y a des algos qui se prêtent bien à un truc et pas à l’autre.

                            La différence vient du fait que dans le cas de la vectorisation on fait du single instruction multiple data, donc il faut penser son algo. comme une suite d’opérations simples s’appliquant sur des vecteurs. Tandis que dans le « multiple instruction single data » typique du CPU (j’entends par là qu’un cœur n’est pas bon pour traiter un grand nombre de données à la suite), je vais penser mon algo. comme une énorme et unique boucle à paralléliser dans laquelle je ferais beaucoup d’opérations mais sur un nombre limité de données.

                            « C'est vrai pour les informaticiens, beaucoup moins pour les physiciens/mathématiciens/biologistes/etc. »
                            Le problème est que les multi-cœurs sont devenues bien trop courantes pour qu’un physicien/mathématicien/bioligiste/etc. qui a un peu de calcul à faire puisse faire l’impasse dessus.

                            • [^] # Re: Par pitie

                              Posté par . Évalué à 3.

                              Je ne pouvais pas paralléliser chacune des boucles vectorisées, car la parallélisation a un sur-coût trop important.

                              Attention à ne pas confondre architectures vectorielles et instructions SIMD (type SSE ou AltiVec). C'est vraiment pas pareil [1]. :-) Un processeur vectoriel des familles implémente une certaine forme de parallélisme de données (donc SIMD), mais fonctionne vraiment différemment d'une instruction SIMD. Mais ce n'est pas très important.

                              Dans ton exemple de boucle, les instructions SIMD que tu utilises permettent d'obtenir du parallélisme d'instruction (ILP). Il s'agit de parallélisme à grain fin, et oui dans ce cas, on va choisir les boucles les plus internes, car l'overhead (le surcoût) est minimal [2]. C'est aussi quelque chose de possible uniquement parce que tu as un jeu de données extrêmement régulier (mêmes bornes pour tous tes vecteurs, ou bien il est possible de s'arranger pour que la boucle ait les bonnes propriétés). Lorsque tu veux paralléliser un ensemble d'instructions par contre (et pas l'instruction elle-même), tu dois passer par des mécanismes à grain plus gros (pthread, tâche OpenMP, processus MPI, etc.). Et dès lors, oui, bien sûr, il y a un coût pour initialiser les constructions parallèles, l'initialisation de la liste des tâches de ton programme, etc. Que ce soit écrit avec des pthread_create() ou via une construction Cuda, je ne vois pas ce que ça change: ça reste du bête parallélisme de données. Il faudra donc avoir suffisamment de données à fournir à une des tâches créées pour cacher le coût de création de la tâche elle-même, mais je ne vois pas ce qu'il y a de nouveau là-dedans.

                              Du coup, tu as quand même titillé ma curiosité : quel langage as-tu utilisé pour paralléliser ta boucle ? S'il s'agit d'OpenMP, quel compilateur ? (Par exemple, l'implémentation d'Intel dans leur compilateur est notoirement meilleure que celle de gcc...) Et surtout, surtout, quelle était la taille de tes vecteurs ?

                              Quant à la vectorisation en règle générale, j'estime qu'un compilateur suffisamment évolué devrait savoir gérer les cas relativement simples sans passer par un humain (de la même manière qu'un bon compilateur C devrait savoir reconnaître for (i=0;i<N;++i) a[i] = 0; et remplacer le tout par un appel à memset(a,0,N*sizeof(type_de_a))). Le compilateur d'Intel le fait, gcc sait le faire dans une certaine mesure, si je ne me trompe pas le compilateur d'IBM le fait pour POWER, etc.

                              Ici c’est trivial, mais sur un algo. un poil complexe, je ne vois pas comment : par exemple le parcours d’un arbre, je vois bien comment le paralléliser en donnant un sous-arbre à chaque process, par contre je ne sais pas comment le vectoriser.

                              C'est vrai, mais je ne vois pas le rapport avec les GPU. En fait c'est même pire, les GPU sont notoirement mauvais pour traiter d'opérations sur les graphes en parallèle. Par contre, si tu as les bons outils (et là, je vais ressortir Cilk, que j'ai cité plus haut), tu utilises ... Cilk, qui est parfait pour ça (enfin dans certaines limites quand même), propose une approche divide-and-conquer de la parallélisation, et a même permis d'obtenir des programmes de d'IA pour échecs parmi les plus performants (ça commence à dater, mais Socrates a, à plusieurs reprises, fini dans le top 5 de grosses compèt' d'IA d'échecs vers la fin des années 90).

                              Cela dit, tu as raison de faire remarquer que le plus gros des applications gourmandes en ressources et tournant sur des gros calculateurs étaient en majorité des applications très régulières en termes structures de contrôle (if, while, etc.). D'où l'importance de trucs genre TOP500, avec comme seule métrique le nombre d'opérations flottantes par seconde (FLOPS).

                              Mais avec l'apparition des réseaux sociaux, etc., on s'aperçoit enfin dans les sphères du HPC que la métrique est peut-être un peu désuète (ou en tout cas incomplète). D'où la création fin 2010 du challenge Graph500 (patrick_g avait fait une news sur le sujet à l'époque). Ici la métrique est plutôt le nombre de nœuds traversés à la seconde si je me souviens bien, dans un parcours en largeur.

                              Donc si tu me dis que la parallélisation d'un programme dépend fortement des structures de données utilisées pour traiter un problème donné, je suis d'accord, mais je ne vois pas ce que ça change par rapport à la programmation séquentielle : en fait, si tu veux vraiment passer par une boucle for parallèle pour traverser une arbre par exemple, tu peux parfaitement recourir aux mêmes stratagèmes et algos utilisés pour parcourir un arbre de façon itérative et pas récursive. Il suffit d'utiliser une pile pour simuler les niveaux de récursion. Comme en plus il s'agit d'un arbre, tu sais que les nœuds ne peuvent pas être partagés (les données qu'ils contiennent par contre, c'est une autre histoire). Évidemment, un arbre n'est pas forcément équilibré, et dès lors on se retrouve avec un problème d'équilibrage de charge (mais là encore, Cilk avait fait fort et avait montré qu'ils pouvaient avoir un ordonnancement proche de l'optimal — mais, ironiquement, pas forcément le plus efficace).

                              Mais je digresse. Tout ça pour dire que je ne suis pas sûr de voir le rapport entre ce que je disais à propos des GPU (et surtout il faut faire bien attention : les GPU Nvidia n'ont rien à voir avec ceux d'AMD du point de vue architectural), et du fait qu'ils ne réinventaient pas vraiment grand chose pour quelqu'un qui a du bagage en prog parallèle, et ce que tu racontes à propos de la vectorisation — qui est vrai hein, c'est juste que j'appelle pas ça de la parallélisation au sens où la plupart des gens l'entendent. :)

                              [1] Même si par ailleurs, les instructions SIMD sont clairement inspirées par les machines vectorielles.
                              [2] Dans ce cas précis on peut carrément le considérer comme nul.

                              • [^] # Re: Par pitie

                                Posté par . Évalué à 2.

                                On m’a mis au courant pour GCC ;) c’est bien du Fortran, avec le compilateur Intel et OpenMP. Pour la taille, je n’ai pas fait de mesure systématique, ça allait de quelques milliers de points (avec boucle interne sur les voisins des points — en moyenne 100 —, déjà calculés), à quelques centaines de milliers (sans boucles interne), je crois me souvenir avoir fait des tests avec quelques dizaines de milliers (×100 toujours) et quelques millions. Il faut que la boucle soit assez conséquente (en terme d’instructions, pas seulement de données) pour avoir un gain, comme tu l’as expliqué.

                                Je suis d’accord pour dire que la vectorisation est facilement réalisable automatiquement pour les cas simples (c’est bien pour ça que je me suis contenté d’écrire 1:N dans le premier cas, comme le Fortran le permet, au lieu d’une version C qui masquerait ça). Mais pour moi ça nécessite toujours de penser les algos. dans ce sens, il suffit de quelques variables temporaires dans la boucle, qu’un élément j du vecteur attende le résultat sur l’élément i et la boucle n’est plus vectorisable de façon triviale, voir pas du tout dans le cas d’un arbre.

                                « C'est vrai, mais je ne vois pas le rapport avec les GPU. En fait c'est même pire, les GPU sont notoirement mauvais pour traiter d'opérations sur les graphes en parallèle. »

                                On est bien d’accord, c’est ce que je voulais signaler, on n’a pas affaire à la même façon de paralléliser, il y a des algos qui ne sont tous simplement pas vectorisables. Pour continuer sur le parcours d’un arbre, on peut le faire itérativement avec une pile fait-main, mais ça ne change rien au fait que tu ne peux pas le vectoriser car ma n-ième itération dépendra de ce que j’aurais fait à ma n-1-ième, et pour la petite parallélisation passe encore, mais ça scale pas comme on dit dans le coin. Un algo. donné pourra être performant en séquentiel, pourri en parallèle, et vice-versa, idem en vectorisation.

                                « qui est vrai hein, c'est juste que j'appelle pas ça de la parallélisation au sens où la plupart des gens l'entendent. :) »

                                Je crois qu’au final on est bien d’accord :), juste une question de vocabulaire : pour moi la vectorisation, c’est-à-dire le truc qu’on fait sur GPU, ou la façon de faire lorsqu’on n’avait pas accès à des clusters et aux multi-cœurs, est une forme de parallélisation.

                                Bref, mon commentaires était de souligner que tout ceci pourrait être un peu plus enseigné étant donné l’importance que commence à prendre la parallélisation, y compris pour des « non-informaticiens ». J’ai appris comment optimiser un algo. en séquentiel, par contre je suis assez vite perdu en parallèle, et c’est clairement un manque en ce qui me concerne. Bref, en prépa. j’ai appris à évaluer un algo. en fonction de sa complexité en nombre d’op. par sec., en parallèle ce raisonnement ne tient plus : si pour chaque CPU de plus aux M-1 présents tu ajoutes moins de N/M opérations supplémentaires, ça vaut toujours le coup.

                                • [^] # Re: Par pitie

                                  Posté par . Évalué à 2.

                                  Je suis d’accord pour dire que la vectorisation est facilement réalisable automatiquement pour les cas simples (c’est bien pour ça que je me suis contenté d’écrire 1:N dans le premier cas, comme le Fortran le permet, au lieu d’une version C qui masquerait ça). Mais pour moi ça nécessite toujours de penser les algos. dans ce sens, il suffit de quelques variables temporaires dans la boucle, qu’un élément j du vecteur attende le résultat sur l’élément i et la boucle n’est plus vectorisable de façon triviale, voir pas du tout dans le cas d’un arbre.

                                  Il ne faut pas confondre trois choses :

                                  1. L'algorithme général qui permet de régler ton problème, et
                                  2. la façon dont tu implémentes la solution (et les structures de données afférentes)., et enfin
                                  3. les (micro-)optimisations que tu peux faire sur un code.

                                  Les deux premiers points sont les deux plus importants, car ils t'apportent une solution correcte. Le troisième point, si les deux premiers ont été correctement effectués (meilleur algo possible pour le problème à résoudre, meilleur choix de structure de données pour réaliser l'implémentation de l'algo, etc.), alors on peut enfin se pencher sur la (micro-)optimisation du code.

                                  Et oui, si tu veux juste traverser un arbre (pour faire un parcours en profondeur par exemple), mais que tu n'as pas de gros calcul à effectuer sur les nœuds, alors la vectorisation est inutile (ou infaisable). Mais tu parles déjà d'un type de programmation bien plus avancé que ce que la plupart des gens connaissent. Pour la plupart des physiciens ou numériciens que j'ai pu croiser, si le compilateur leur dit « j'ai vectorisé tes boucles », ils sont tout contents, mais sinon, de toute manière, ils ont ce gros machin MPI à écrire, et ça leur bouffe déjà la plupart de leur temps de cerveau disponible. :)

                                  Ce qu'il nous faut en fait, c'est le même genre de bibliothèques de bases que ce qui est proposé en Java par exemple (dans util.concurrent si je me souviens bien — en tout cas un truc dans le genre) ou en C++ avec Boost (même si pour le moment c'est un peu léger) : des machins qui sont « parallel-proof » (dans une certaine limite). Et il nous faut d'autres gens qui programment d'autres structures de données qui permettent des accès concurrents efficaces (pas de gros verrou en entrée de la structure de donnée par ex). Sauf que la programmation efficace de ce genre de bibliothèque n'est pas à la portée du premier venu. Par exemple, une implémentation concurrente et efficace d'une liste chaînée passe par l'utilisation d'opérations de type compare-and-swap, pour « verrouiller » atomiquement (et efficacement) un maillon de la chaîne que tu traverses. Les algos pour le faire sont loin d'être triviaux. Par exemple, je t'encourage à aller regarder du côté des implémentations lock-free des Skip-list : le papier original explique très bien comment faire, mais malgré tout c'est pas évident à réaliser sans bug.

                                  Bref, il nous faut des gens qui nous fournissent des implémentations génériques et efficaces (en C, C++, etc.) de structures de données qui gèrent la concurrence. Sur une machine « normale » (entre 2 et 8 cœurs ou threads), ces algos sont suffisants pour garantir un passage à l'échelle. Sur une grosse machine parallèle, là oui, il va falloir travailler un peu plus. Mais c'est ce qui fait que je vais avoir du boulot pour les dix prochaines années au moins ... :)

                • [^] # Re: Par pitie

                  Posté par . Évalué à 7.

                  C'est superbe completement a la masse mais superbe et bien caracteristique de l'education nationale qui ne regarde que son interet propre sans penser a ceux des eleves/etudiants.

                  Je te trouve un peu dur là. Et si il y avait une raison logique à présenter Scheme aux étudiants ? Et si des tas d'enseignants avait pesé le pour et le contre avant de proposer un tel choix ? Et si la raison d'être de Scheme n'était pas, par hasard hein, de tout simplement faciliter l'apprentissage de l'informatique ? Et pourquoi l'auteur a écrit un livre pour apprendre la programmation avec le scheme ? Ils sont cons ces gens là peut être ?

                  Je cite la page wikipedia de Scheme histoire d'étayer un peu mes propos :

                  Scheme follows a minimalist design philosophy specifying a small standard core with powerful tools for language extension. Its compactness and elegance have made it popular with educators, language designers, programmers, implementors, and hobbyists.

                  Avant de m'étayer sur les qualités pédagogiques du Scheme, prenons au hasard le cas du C, choix classique dans pas mal de formations.

                  Grosso modo, voici ce qui t'attends :

                  • La syntaxe est cryptique pour un débutant, il y a les ";" les "*", les "{}", les "[]" et les "()"
                  • Le langage est fortement typé, encore une notion de plus à aborder
                  • Il faut expliquer comment fonctionne la mémoire, hello malloc
                  • les trois quarts de tes étudiants se casseront les dents sur les pointeurs, tu viens de leur expliquer le principe de la variable que déjà tu introduis le concept d'une variable qui en référence une autre
                  • Créer un concept abstrait aussi simple qu'une liste requiert l'apprentissage de quasiment tout le langage : structures, pointeurs, allocation mémoire, ...

                  En gros tu vas te retrouver à présenter à des étudiants, qui n'ont jamais programmé de leurs vies, des concepts complètement nouveaux, le tout dilué dans une syntaxe rigoureuse bien assaisoné de notions d'architecture d'un ordinateur ( et pourquoi il faut compiler monsieur ? ).

                  Je te laisse imaginer le résultat final, tiré de mes propres expériences :

                  • Les geeks se baladent et dorment pendant ton cours car ils s'ennuient, ils se sont cassés les dents sur ces concepts bien avant. Note à l'examen : 20 et ils parent une heure avant
                  • Les bons élèves, à force d'acharnement finiront par y arriver et obtiendrons entre 12 et 16 selon les profils et l'assiduité.
                  • Les élèves moyens gratterons un 10 à 12 péniblement

                  On prend ces élèves, et paf le C++ l'année d'après. Là, c'est 10 maxi. Non pas que les élèves soit glands, c'est juste que si tu rajoutes l'aspect OO, les templates et autres joyeusetés, il te reste vraiment pas grand monde pour arriver à correctement assimiler toutes les notions aussi vites. ( Et là on arrive au java, super ya pu de pointeurs ! OLOLOOL eclipse ctro bien ! et il corrige même la syntaxe à la volée. Enjoy le java haut en couleur, pour alimenter DailyWTF ).

                  Concrètement, tu fais toujours face au même problème, les élèves sont des gens normaux, pas plus cons que les autres, ils sont tous capables de comprendre ( sauf exceptions ) des algos simples, des hiérarchies basiques, mais la moindre montée en niveau se solde par un échec.

                  Donc là, on soulève un problème pédagogique, et mon avis personnel sur le sujet est que tu as trop de bruit pédagogique. Trop de conneries syntaxiques, trop de conneries reliée au matériel dont ils se foutent complètement car ils ne deviendront pas forcément des développeurs acharnés, mais peut être des physiciens, biologistes, ou je ne sais quoi d'autre.

                  Maintenant tu débarques avec le scheme.

                  • La syntaxe est abordée très rapidement, simple à maitriser : (function arg1 arg2 ...), #f #t 123 "salut" et \a \b \c
                  • La récursivité et autres concepts abstraits fondamentaux sont abordés directement.
                  • Pas de types à gérer explicitement
                  • Le fonctionnel est plus logique mathématiquement, même si les étudiants ne s'en rendent pas compte
                  • On peut quand même aller voir des concepts bien avancés si le besoin se présente

                  Bref, quand tu introduis Scheme tu :

                  • permets aux étudiants d'apprendre les bases de la programmation
                  • mets de cotés les concepts inutiles en dehors de toute direction autre qu'informatique
                  • peux faire réfléchir des étudiants à des problèmes complexes, sur le plan algorithmique comme générer des grilles de sudoku avec différentes approches ( va faire ça en C, faudra déjà qu'ils compilent leurs projets sans fail de syntaxe, sans manger la mémoire sur une boucle foireuse )

                  Voilà, selon moi apprendre à programmer c'est plus intégrer un raisonnement, une approche, qu'aller faire semblant de coder en bricolant de la syntaxe et un tri à bulle. Après, il n'y a rien de magique, apprendre à programmer, ça reste un exercice complexe, si on pouvait éviter de paumer les gens sur les détails, ce serait pas mal non ?

                  PS : Et après le scheme, généralement vient le C et le C++ un peu plus tard dans le cursus, et cela se passe bien mieux, car les étudiants savent déjà ce qu'est une variable, une fonction et vont finalement pouvoir concentrer leur apprentissage sur la syntaxe, l'aspect impératif et la gestion de la mémoire tranquillement.

                  • [^] # Re: Par pitie

                    Posté par . Évalué à 3.

                    Grosso modo, voici ce qui t'attends : * La syntaxe est cryptique pour un débutant, il y a les ";" les "*", les "{}", les "[]" et les "()"

                    Oui, carrément.

                    • Le langage est fortement typé, encore une notion de plus à aborder

                    Non, C n'est carrément pas typé, et tu n'as carrément pas besoin d'expliquer ce qu'est un type [1] aux étudiants pour qu'ils comprennent à quoi ils servent.

                    • Il faut expliquer comment fonctionne la mémoire, hello malloc
                    • les trois quarts de tes étudiants se casseront les dents sur les pointeurs, tu viens de leur expliquer le principe de la variable que déjà tu introduis le concept d'une variable qui en référence une autre

                    Ça par contre, ça dépend vraiment de comment est abordé le langage. Tu peux parfaitement utiliser un sous-ensemble du C et apprendre aux étudiants à manipuler des tableaux (en omettant de leur expliquer ce qu'est un pointeur, et en passant par l'utilisation de typedef). Là où j'ai fini mes études, ils utilisent C+SDL en cours de prog de première année, et les étudiants ne voient jamais de malloc ou autres pendant le premier semestre. Ils découvrent le principe de la programmation structurée et impérativement tranquillement, en « voyant » ce que leurs algos produisent, graphiquement. Les makefiles sont déjà écrits pour eux, et il suffit qu'ils utilisent Geany (par exemple) pour pouvoir compiler leurs trucs. Et ils sont quand même suffisamment futés pour piger la surface de ce qu'est la compilation : la transformation d'un programme écrit dans un certain langage vers un autre langage (le binaire dans le cas de la compilation C).

                    • Créer un concept abstrait aussi simple qu'une liste requiert l'apprentissage de quasiment tout le langage : structures, pointeurs, allocation mémoire, ...

                    Oui, mais j'insiste sur le fait qu'il y a déja beaucoup d'algos que tu peux apprendre à des élèves juste avec des tableaux.

                    Ceci étant dit, et ayant fini de jouer à l'avocat du diable, je suis d'accord avec toi. :-P C n'est sans doute pas le meilleur premier langage (sauf si tu as une formation « complète » en informatique pour accompagner son enseignement : c'est ce qui se passe dans pas mal d'IUT).

                    [1] Bon, pas tout à fait : il faut quand même expliquer les règles de conversion des types primitifs (int->float, float->int, etc), mais sinon normalement le compilateur est censé gueuler à chaque fois que tu essaies de mettre le contenu d'une variable là où ça n'a pas de sens.

                    • [^] # Re: Par pitie

                      Posté par . Évalué à 2.

                      Argl, et je vois une énôôÔôÔôrme faute dans le message précédent : C est bien typé, mais faiblement (donc pas fortement ! :-))

              • [^] # Re: Par pitie

                Posté par . Évalué à 0.

                Pourquoi surtout? La fac d'informatique oui, la fac de physique, de math, de biolo, de droit ou autre absolument pas mais en effet ce sont generalement des profs d'informatiques qui enseigne dans les premieres annees a la fac d'ou l'aberration du scheme, chose qui heureusement ait corrige pour le plus grand bonheur de la majorite des etudiants lorsqu'ils vont vers une autre discipline que l'informatique.

                Les langages fonctionnelles devaient remplacer tout mais bon aujourd'hui encore c'est le C, C++, java, C#, fortran, python, perl, ruby qui dominent et tres tres largement et meme si certains aspects de la programmation fonctionnelle a ete reprise c'est juste une toute petite part.

                • [^] # Re: Par pitie

                  Posté par (page perso) . Évalué à 5.

                  Pourquoi surtout ?

                  Mais parce que c'est son rôle premier !

                  Pour former des techniciens il y a les BTS et les IUT.

                  Je vous rappelle quand même ce qu'est un cursus complet en fac :

                  licence => master => doctorat

                  Voilà c'est dit.

                  Quand à votre délire sur "l'aberration" Scheme, je vais répéter ce qui a déjà été dit : passer de Scheme à Java ou Python n'est pas bien difficile. Alors où est le problème ? Qu'est-ce qui vous empêche de faire du Scheme ET du Java ?

                  Hé puis quoi ? De quoi parle ce journal ? D'un bouquin pour apprendre la progra avec Scheme, pas du rôle de la fac dans le monde du travail ni de la place des langages fonctionnels dans l'industrie.

                  Vous êtes totalement hors-sujet.

                  • [^] # Re: Par pitie

                    Posté par . Évalué à 1.

                    Les facs de science doivent surtout former des informaticiens? Ouh la la cela ne sent pas le nombrilisme a fond....

                    Comme je l'ai deja dit 10 fois je parle d'enseigment d'un langage en Terminal S (comme indique dans le journal) et dans les troncs commun des facs de sciences. Je ne parle pas des facs d'informatiques c'est a dire > bac+2.

                    • [^] # Re: Par pitie

                      Posté par (page perso) . Évalué à 2.

                      Et alors ? À ce que je sache un cours d'info en Terminale n'a pas pour but de vous propulser chez Microsoft dès le bac en poche. Il s'agit d'une initiations à la progra, est de ce domaine, je ne vois pas ce que Scheme peut poser comme problèmes puisque le but n'est pas de former des techniciens.

                      Ce qui serait absurde ce serait d'enseigner comme seul langage en IUT ou BTS d'info Scheme, OCaml ou Eiffel.

                      Que ce soit pour la recherche, l'initiation, ou le seul travail sur les algorithmes, Scheme est parfaitement adapté.

                      M'enfin, si Scheme vous a fait souffrir....

                    • [^] # Re: Par pitie

                      Posté par . Évalué à 1.

                      Précisément, si c'est pour former aux concepts de la programmation, pourquoi enseigner un langage spécifique à un domaine ?

                      J'ai juste l'impression de me répéter, mais Scheme n'est qu'un support.

                      Un support relativement neutre (au niveau de l'application), assez mathématique pour pas s'ennuyer de considérations informatico-informatiques, assez souple pour épouser la majorité des paradigmes et d'effleurer la mécanique globale d'un langage de programmation.

                      • [^] # Re: Par pitie

                        Posté par . Évalué à 1.

                        Parceque les langages fonctionnels ont une logique totalement differentes enfin bon continuer comme cela a enseigner des trucs qui ne servent a rien c'est bien cela contribuera a l'image tres "positive" des facs francaises...

                        • [^] # Re: Par pitie

                          Posté par (page perso) . Évalué à 3.

                          Le mardi 15 mars 2011 à 18:54 +0100, Albert_ a écrit :

                          bon continuer comme cela a enseigner des trucs qui ne servent a rien

                          c'est bien connu d'apprendre ne sert à rien.

                          d'ailleurs on ne devrais pas apprendre à développer sous linux vu que ce
                          qui est recherché en majorité sur le marché du travail c'est du
                          windows.

                        • [^] # Re: Par pitie

                          Posté par . Évalué à 3.

                          Faudrait pas déconner, les Lisp (et le dialect racket utilisé dans le bouquin en particulier) ne sont pas Haskell!

                          Il y a une partie entière du livre présenté qui aborde «L'Impératif et les Objets». Mutation, boucle while, do, et for, constructions itératives, générateurs, présentation d'une forme voisin et sûr du GOTO et tout le toutim au programme. Woot!

                          La tout constructible aisément avec les macros hygiéniques de Scheme. Permettant soit à l'enseignant, soit à l'étudiant, de créer à loisir de nouvelles structures à de contrôle et formes syntaxiques.

                          Alors faudrait arrêter de décrier Scheme simplement parce que tu es ignorant à son sujet ainsi que du contenu du livre présenté.

                          Et dénoncer Scheme comme représentatif du problème des facs françaises, alors que ce langage est utilisé dans pas mal d'Uni de par le monde pour l'introduction à la programmation et/ou à l'algo (http://www.schemers.com/schools.html), c'est risible.

                          • [^] # Re: Par pitie

                            Posté par . Évalué à 2.

                            Faudrait pas déconner, les Lisp (et le dialect racket utilisé dans le bouquin en particulier) ne sont pas Haskell!

                            Hum, c'est pas mal Haskell, et ça semble de plus en plus utilisé dans la Vraie Vie. Ceci dit, quand on sait utiliser l'un, apprendre l'autre n'est pas bien long.

                            • [^] # Re: Par pitie

                              Posté par . Évalué à 2.

                              Je dirais même que c'est un très bon langage! C'est un de mes langages préférés.
                              Galois en fait un usage abondant, dans des domaines de pointes. Et les champs de recherche où il est utilisé sont très excitant.

                              Mais c'était pour répondre à l'affirmation d'Albert_ quant à la différence entre langages impératifs et fonctionnels, qui se trouve peu/pas valable pour Scheme. Ce dernier étant, ce que je définirais, du côté fonctionnel des langages multi-paradigmes. À comparer avec le fonctionnel pur de Haskell, qui tranche carrément.

                              D'ailleurs, j'ai beaucoup apprécié la comparaison entre Lisp, Scheme et Haskell faite dans Land of Lisp. Ainsi que la petite histoire illustrée à propos de la Republic of Haskell.

                • [^] # Re: Par pitie

                  Posté par . Évalué à 2.

                  Les langages fonctionnelles devaient remplacer tout mais bon aujourd'hui encore c'est le C, C++, java, C#, fortran, python, perl, ruby qui dominent et tres tres largement

                  Alors d'une part, ça a déjà été dit, mais si on regarde Java et C#, de plus en plus de constructions venant des langages fonctionnels s'incrustent. La construction « foreach » (et ses variantes) vient directement des constructions type « mapcar » en Lisp par ex. Ensuite, Perl par exemple a, dès le début [1], proposé des constructions initialement inventées dans les langages fonctionnels (« mapcar » donc, mais aussi les fermetures transitives, etc.).

                  Mieux encore: il existe des langages dérivés du C (je pense notamment à Cilk et sa « suite » Cilk++) qui permettent la programmation parallèle en rajoutant un minimum de constructions au langage. Et devine quoi ? Ça passe principalement par la construction d'algos « divide-and-conquer » [2]. La notion de récursivité en algorithmique est essentielle, et même naturelle pour tout un tas de structures de données (je pense notamment aux arbres). Lisp, par exemple, permet (tout comme OCaml) de construire aussi bien des boucles que de faire de la récursion (Scheme est purement fonctionnel si je ne me trompe pas, donc le cas est un peu à part). L'important est de piger comment structurer sa pensée, décomposer une action complexe en actions élémentaires simples. Le langage ne changera rien à ça.

                  [1] Bon en fait non, mais au moins depuis Perl 5.x, et peut-être 4.x, si quelqu'un peut m'aider à retrouver les dates...
                  [2] désolé, je ne connais pas la formule adéquate en français — « diviser et conquérir » ? « dichotomique » ?

                  • [^] # Re: Par pitie

                    Posté par . Évalué à 1.

                    foreach ca existe meme en fortran. La recursivite que je sache cela existe dans a peu pres tous les langages et n'est pas l'apanage des langages fonctionels. JE ne dis pas que les langages fonctionels ne sont pas utiles je dis que l'enseigner en Terminal S ou debut de cursus scientifique (tronc commun) c'est du grand n'importe quoi et de la masturbation du prof (et bien souvent uniquement lui).

                    • [^] # Re: Par pitie

                      Posté par (page perso) . Évalué à 4.

                      Le problème c'est que vous n'avez pas saisi que Scheme n'est pas un langage fonctionnel pur, mais un langage multi-paradigmatique, comme...Python (par exemple).

                      De plus si vous aviez lu l'article au lieu de "troller comme un porc", vous sauriez que l'ouvrage traite de la programmation procédurale et orientée objet.

                      Quand à votre argument de fond, il est simplement débile.

                    • [^] # Re: Par pitie

                      Posté par . Évalué à 2.

                      Quelle version de Fortran ? Pas F77. Et je ne l'ai pas vu en F90 non plus.

                      • [^] # Re: Par pitie

                        Posté par . Évalué à 2.

                        Fortran 95 et donc au dessus. Cela fait donc presque 15 ans que c'est dans le langage. Sauf qu'ils ont appelle ca forall mais je soupconne que cela fait parti des "variantes" du message au dessus.

                        http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlf101a.doc%2Fxlflr%2Fforcons.htm

                        • [^] # Re: Par pitie

                          Posté par . Évalué à 2.

                          Ah oui mais là par exemple ça pose problème : la plupart des codes (même industriels hein) que j'ai vu tourner étaient écrits au mieux en Fortran 90. Je ne doute pas que plein de gens se soient mis au goût du jour, mais c'est comme pour C99 : l'adoption des nouvelles normes est extrêmement lent.

                          Ensuite j'ai regardé ta page, et forall en F95 et supérieur est différent du foreach en Perl, Java, etc., puisqu'il ne concerne finalement que des objets de type tableau, là où dans les autres langages ça marche pour n'importe quel type de collection, et surtout, sans besoin d'utiliser de variable d'indexation.

                  • [^] # Re: Par pitie

                    Posté par . Évalué à 3.

                    désolé, je ne connais pas la formule adéquate en français — « diviser et conquérir » ? « dichotomique » ?

                    Diviser pour régner
                    http://fr.wikipedia.org/wiki/Diviser_pour_r%C3%A9gner_%28informatique%29

            • [^] # Re: Par pitie

              Posté par . Évalué à 3.

              Là, on parle pas simplement d'une activité annexe comme la conduire pour tout à chacun. Là on parle de gens qui doivent professionnellement être capable d'écrire des programmes. Pas nécessairement avec l'acuité d'une personne dont c'est l'activité principale. Mais même en tant qu'«informaticien», la programmation peut être une activité plus que secondaire.

              Comme déjà dit, c'est pas Scheme l'essentiel, c'est les concepts étudiés et mis en œuvre qui compte. Et ça ne veut pas dire que Scheme doit être le seul langage enseigné.

              Et pour ma part, ton raisonnement induit un biais. J'ai le doux rêve que les facs sont sensées former des gens à un science, de tendre à épouser l'état de l'art. Ne pas en sortir formaté pour le marché du travail de l'instant T, mais avec le bagage nécessaire à l'exercice de sa science. Si la branche choisie implique de savoir programmer, il faut dans un premier temps développer les connaissances de base de programmation. Et qu'on soit, à terme, informaticien ou physicien, la base reste la même. En l'occurence, Scheme me semble, ainsi qu'à des personnes bien mieux placées que moi pour le penser, être un langage génial pour assimiler les grands principes.

              Par la suite, il est compréhensible qu'on apprenne à utiliser des outils plus spécifique à son domaine. Mais on doit avoir les connaissances pour s'adapter à l'évolution technologique, et non la freiner parce qu'on a seulement appris à utiliser un outil développé il y a 10, 20, 30ans, et non pas à raisonner avec les principes essentiels. D'autant que l'hémergence de langages comme Scala ou Clojure (un lisp) et l'intégration de plus en plus importante de traits fonctionnels dans les langages «mainstream» tend bien à souligner l'importance des concepts fonctionnels.

              Si on demande aux facs de niveler le niveau par le bas simplement pour satisfaire les industriels dans l'instant, c'est triste.

              J'ajouterais qu'il n'y a pas de quoi s'étonner d'avoir une différence de position sur le marché du travail entre un universitaire et une personne sortie d'école d'ingénieur. Ces filliaires ont des objectifs différents. Si maintenant les gens font le mauvais choix, ou qu'ils n'ont pas conscience de cette différence, c'est un autre problème.

              • [^] # Re: Par pitie

                Posté par . Évalué à -1.

                Et on continuera a produire des chomeurs mais c'est probablement tres bien. Au passage le fait que les Facs de science voient une decrus continue du nombre de leurs etudiants cela ne vous pose de question?

                La séparation Fac == enseignement theorique pour la recherche et ecole d'inge/DUT/IUT = formation pratique c'est bien beau mais dans la pratique c'est pas ce qui se passe vu que la majorite des chercheurs sortent des ecoles d'ingenieurs... Donc vu que la fac n'a meme pas le debouche recherche ou si peu quel est la justification de son existence? Un pretexte pour payer des profs?

                • [^] # Re: Par pitie

                  Posté par . Évalué à 5.

                  vu que la majorite des chercheurs sortent des ecoles d'ingenieurs...

                  Hum... Et tu sors ça d'où ? Parce que dans le labo où je bosse ce n'est pas vraiment ce que j'observe.

                  Au passage le fait que les Facs de science voient une decrus continue du nombre de leurs etudiants cela ne vous pose de question?

                  À moi ça évoque que, peut-être, les gens comprennent que la fac n'est pas la seule possibilité à la sortie du lycée et que d'autres voies peuvent-être envisagées.

                  • [^] # Re: Par pitie

                    Posté par . Évalué à -1.

                    Moi ca evoque surtout que le fait que les facs sont des pourvoyeurs de l'ANPE est un fait bien connu et la non remise en cause de la facon de faire des universites est, pour moi, un peu genante et demontre plutot que l'univerisite vis dans sa petite bulle.

                    • [^] # Re: Par pitie

                      Posté par . Évalué à 1.

                      C'est une façon de voir.

                      Mais j'attends toujours un petit quelque chose qui pourrait me laisser penser que, peut-être, il y avait plus de chercheur issus d'écoles d'ingénieurs que de chercheurs issus de la fac comme tu l'affirme un peu plus haut.

                    • [^] # Re: Par pitie

                      Posté par . Évalué à 5. Dernière modification le 16/03/11 à 21:47.

                      La différence entre la fac et les IUT/IUP/STS/Écoles d'ingénieur, c'est que la fac n'a pas le droit de sélectionner à l'entrée. C'est un peu facile de dire que (par exemple) mon ancien IUT a 95-100% de réussite en 2è année quand

                      • 25% n'ont jamais atteint ladite deuxième année
                      • Sur 3500-4000 dossiers examinés, seuls 190 sont retenus (soit environ 5-6%)

                      Une fac de sciences (hors facs de médecine et formations paramédicales) récupère tous les mecs qui n'ont pas réussi à entrer dans les filières sélectives d'une part, et les mecs qui veulent/ont une approche plus théorique ou qui ne veulent pas de la pression imposée par les prépas d'autre part. Donc oui, au bout d'une à trois années de fac, seuls environ 30% des étudiants obtiennent une licence. Ça reste toujours plus important que les 6-10% qui entrent en IUT (dont une partie ne va pas atteindre la 2è année), tu ne trouves pas ?

                      D'autre part, une bonne partie des enseignements que l'Université (en général, donc) fournit n'a pas vocation à être « professionnalisante » en soit (je pense aux sciences humaines, entre autres, mais aussi aux parties « fondamentales » des sciences dures, genre maths, physique, etc.). Et comme aucun institut professionnalisant (IUT/IUP/etc) ne va proposer de formation allant dans ce sens (enfin, pas la plupart, car heureusement certains comprennent l'importance d'être un chouïa plus pluridisciplinaire dans leurs formations).

                      En fait je serais bien plus d'accord avec toi si on avait de vrais cours d'algo/prog à partir du lycée, par exemple. Dans ce cas, oui, arrivé à la fac, on utilise simplement un langage que la profession utilise. Mais en attendant, les facs qui utilisent des langages « vraiment utilisés » n'utilisent pas Python (qui est libre et a des qualités certaines, tels qu'un typage fort). Elles utilisent Matlab (qui a des bugs tout partout, et un typage faible tout pourri).

                      • [^] # Re: Par pitie

                        Posté par . Évalué à 1.

                        Je ne dis pas que TOUT dans l'enseignement doit avoir une finalite de professionalisation par contre ne venais pas me raconter que l'informatique c'est juste bien pour la culture generale. C'est surtout et avant tout un outil et lorsque l'on commence a enseigner comment diriger un porte-avion avant meme de savoir naviguer cela amene generalement a qq problemes.

                        Je sais pertinnement que la fac "recupere" pas mal de monde qui n'ont pas pu aller dans les formation a vocation courte. Malheureusement on voit le probleme dans la suite des etudes et dans le marche du travail. Les etudiants faisant des theses sont en grandes majorites issus des ecoles d'ingenieurs et des IUT/IUP/... qui n'ont pas vocations a former des chercheurs a la base (en dehors de 1 ou 2 ecoles). A partir de cette constatation peux tu me dire ce que doive faire les pures faqueux? Ils ne peuvent pas trouver du boulot rapidement car ils n'ont pas eu de formation professionnalisante et ils ne peuvent, en grande majorite, pas aller dans la recherche car les places sont prises par ceux qui ont fait des formations professionnalisante. Alors en dehors de justifier le salaire des profs d'universite cela sert a quoi? Et oui je pense que la fac pour un gamin de 20 ans doit avoir une finalite: "avoir acquis des connaissance lui permettant de trouver un boulot" que les cours de formations continue et pour le 3eme age soit plus "libre" ok mais pas pour les etudiants de 20 ans.

                        Et oui je considere scheme comme un joli jouet pour informaticien et qq matheux. Ca fait bien 30 ans que ce langage existe et malgre ses super qualites le seul "gros" projet s'en servant c'est .... emacs et encore meme pas mais c'est dans la meme famille. Il n'y a pas de bibliotheque scientifique digne de ce nom (un embryon existe mais c'est tout) par exemple. Lorsque l'on compare par rapport a des langages bien plus recent tel que le C++, java, C# ou python cela fait pitier et cela montre bien que dans la vraie vie il n'y a pas grand monde qui veuille se palucher quelle est la putain de parenthese a la con qui fait tout foire.

                        • [^] # Re: Par pitie

                          Posté par (page perso) . Évalué à 3.

                          C'est surtout et avant tout un outil et lorsque l'on commence a enseigner comment diriger un porte-avion avant meme de savoir naviguer cela amene generalement a qq problemes.

                          Justement ! Le but est d'apprendre l'algo en premier, pas la programmation (naviguer avant le porte avion). Et Scheme est pas mal pour ça...

                          Les etudiants faisant des theses sont en grandes majorites issus des ecoles d'ingenieurs et des IUT/IUP/.

                          Les chiffres ?

                          • [^] # Re: Par pitie

                            Posté par . Évalué à -1.

                            Justement ! Le but est d'apprendre l'algo en premier, pas la programmation (naviguer avant le porte avion). Et Scheme est pas mal pour ça...

                            Pour cela tu n'as absolument pas besoin du moindre langage de programmation donc non le scheme ne se justifie absolument pas dans ce cadre.

                            Les chiffres ?

                            les etudiants que je connais en france (une bonne dizaine dans autant de filiaire differente a qui j'ai pose la question). Mais si toi tu as des chiffres prouvant le contraire je ferai mon mea-culpa.

                            • [^] # Re: Par pitie

                              Posté par (page perso) . Évalué à 4.

                              Pour cela tu n'as absolument pas besoin du moindre langage de programmation donc non le scheme ne se justifie absolument pas dans ce cadre.

                              Super l'argument. On fait toujours des TPs en algo, et c'est bien pratique de voir les algos tourner en vrai sur une machine. Dis moi, t'as jamais enseigné l'algo non ?

                              les etudiants que je connais en france (une bonne dizaine [...]

                              Ça c'est de l'échantillon. Pour ma part, j'en connais beaucoup plus et c'est tout l'inverse.

                              • [^] # Re: Par pitie

                                Posté par . Évalué à 2.

                                « On fait toujours des TPs en algo, et c'est bien pratique de voir les algos tourner en vrai sur une machine. »

                                Toi t’as pas fait prépa. :)

                                • [^] # Re: Par pitie

                                  Posté par (page perso) . Évalué à 2.

                                  Non, en effet. J'ai fait la fac de sciences et on a jamais fait de Scheme ;-)

                              • [^] # Re: Par pitie

                                Posté par . Évalué à 1.

                                Moi j'ai enseigné l'algo, et on ne faisait pas de TP. Par contre, on peut très bien faire tourner les algos sans utiliser d'ordinateur, avec un paquet de carte à jouer.

                                • [^] # Re: Par pitie

                                  Posté par (page perso) . Évalué à 2.

                                  Oui, si on veut, on peut ne pas utiliser d'ordinateur, mais c'est quand même bien sympa de pouvoir s'amuser à tester sur une machine les algos qu'on a fait. Les premier cours d'info ne sont pas des cours de programmation et qu'importe le langage, du moment qu'il n'embrouille pas l'étudiant avec des fioritures techniques.

                        • [^] # Re: Par pitie

                          Posté par . Évalué à 1.

                          La séparation Fac == enseignement theorique pour la recherche et ecole d'inge/DUT/IUT = formation pratique c'est bien beau mais dans la pratique c'est pas ce qui se passe vu que la majorite des chercheurs sortent des ecoles d'ingenieurs...

                          --

                          Les etudiants faisant des theses sont en grandes majorites issus des ecoles d'ingenieurs et des IUT/IUP/...

                          C'est cohérent, ça sert bien ton propos mais tu sort ça d'où ?

                        • [^] # Re: Par pitie

                          Posté par (page perso) . Évalué à 0.

                          Et oui je considere scheme comme un joli jouet pour informaticien et qq matheux. Ca fait bien 30 ans que ce langage existe et malgre ses super qualites le seul "gros" projet s'en servant c'est .... emacs et encore meme pas mais c'est dans la meme famille. Il n'y a pas de bibliotheque scientifique digne de ce nom (un embryon existe mais c'est tout) par exemple. Lorsque l'on compare par rapport a des langages bien plus recent tel que le C++, java, C# ou python cela fait pitier et cela montre bien que dans la vraie vie il n'y a pas grand monde qui veuille se palucher quelle est la putain de parenthese a la con qui fait tout foire

                          C'est vraiment n'importe quoi...

                          1) Pas de bibliothèques scientifiques :

                          Sachant que Scheme/LISP/Clojure disposent d'implémentations en Java/.NET j'ai quelques doutes...

                          2) Les parenthèses :

                          L'ignorant que vous êtes ne sait pas que n'importe quel éditeur qui sait gérer un minimum LISP permet de gérer très facilement la question des parenthèse.

                          Personnellement ça me pose moins de problèmes pratiques que l'indentation Python (qui ne pose pas non plus beaucoup de problèmes).

                          Mais surtout : les gains sont énormes. Mais encore faut-il, pour s'en rendre compte, connaître quelque chose à la programmation.

                          3) le seul gros projet est Emacs :h

                          Hum... Gimp, Lilypond, Maxima... De petits projets ?

                          Certes, les LISP ne sont plus trop à la mode dans l'industrie, et alors ?

                          a. LISP continue d'inspirer nombre de langages "modernes" (autant dire que ce langage né en 1957 est encore le plus "moderne" des langages de programmation).

                          b. De toute manière on se torche de tout cela puisque le sujet ça n'est pas l'industrie, mais l'apprentissage des fondamentaux théoriques de la programmation.

                          • [^] # Re: Par pitie

                            Posté par . Évalué à 2.

                            Sans compter le fait que LISP par exemple a été extrêmement précieux dans la création d'AutoCAD par exemple...

                        • [^] # Re: Par pitie

                          Posté par . Évalué à 3.

                          Bon, j'ai fait une thèse, et s'il est vrai qu'une portion non-négligeable venait comme moi d'école d'ingénieur, ce n'était clairement pas la majorité dans mon labo. Et c'est très bien comme ça : ça permet de mélanger un peu les historiques.

                          Enfin dans tous les cas, tu as tort, la majorité des doctorants ne vient clairement pas de grandes écoles. Et comme ni toi, ni moi n'avons de chiffres concrets, je vais me cacher derrière un argument d'autorité et te dire que je suis docteur, moi monsieur. ;-)

                          • [^] # Re: Par pitie

                            Posté par (page perso) . Évalué à 0.

                            Idem, mon expérience à moi que j'ai (docteur depuis 2007 et maitre de conférences depuis 2009), c'est qu'une majorité de chercheurs, surtout dans les domaines ayant trait à l'algorithmique (c'est moins vrai en génie logiciel), sont issus des universités. Les raisons en sont simples : les écoles d'ingénieurs forment des managers et des « super techniciens », pas des chercheurs. Pour avoir la possibilité de faire une thèse, il faut déjà refaire un master recherche, rattraper plusieurs années de retard en littérature théorique, acquérir une autonomie et une créativité scientifique qui ne sont pas du tout l'apanage des écoles et encore moins des classes préparatoires…

                            Et je dis tout ça en étant moi-même issu d'une école d'ingénieurs ! Ces trois ans de retard théoriques (y compris en programmation fonctionnelle, que je n'ai jamais abordé en école), les difficultés à attaquer un problème ouvert, je les ressens tous les jours, m'ont causé d'énormes torts au cours de ma thèse et post-docs, et me freinent encore aujourd'hui.

            • [^] # Re: Par pitie

              Posté par . Évalué à 3.

              De plus j'ai bien dit qu'il devait savoir se servir d'un langage et que le scheme est absolument inexistant dans la physique, les maths et les autres matieres scientifiques que l'informatique.

              Oui ben à ce propos. Justement, comme LISP, OCaml, et tout un tas de langages fonctionnels ne font pas partie des canons de l'industrie, on se retrouve avec des physiciens qui ne connaissent QUE Fortran et C++ et qui implémentent (avec moultes difficultés) des analyseurs syntaxiques et préprocesseurs pour des langages pour domaines spécialisés/spécifiques (DSL) plutôt que d'écouter un de mes anciens collègues qui se proposait de leur montrer comment implémenter simplement [1] les mêmes DSL en OCaml (qui pourtant est un langage qui s'y prêterait bien plus, tout comme LISP ou Scheme).

              [1] Attention, « simplement » ne signifie pas que ça ne prend pas de temps à tester, valider, etc.

        • [^] # Re: Par pitie

          Posté par (page perso) . Évalué à 3.

          Est-ce que l'on demande a un informaticien d'etre un specialiste en physique des plasma?

          Non, mais j'ai tout de même eu des cours de mécanique, de chimie, d'astrophysique, etc. Est-ce que ça me sert comme outil dans mon métier d'informaticien ? Non !

          Tu as une vision bien utilitariste de l'enseignement. S'ils veulent une formation technique, il y a les BTS, les IUT et les écoles d'ingénieur. L'université, à mon avis, à une autre mission. Si on ne veut pas de socle de culture générale scientifique, on choisit une autre filière. Et je ne vois pas pourquoi l'informatique ne ferait pas partie de ce socle au même titre que les autres sciences.

          • [^] # Re: Par pitie

            Posté par . Évalué à 1.

            La mission des universites a "tres" legerement change depuis que l'on donne le bac ou du moins l'aurait du. Toutes les etudes montrent que l'universite n'est pas en phase avec les besoins de la societe. Lorsque l'universite ne "fabriquait" que des profs et des chercheurs cela n'etait pas vraiment un probleme mais ce n'est plus le cas aujourd'hui.

            Tu te plaints d'avoir du faire de la physique meca, chimie et astrophysique. Dans un cursus a la fac la chimie n'est absolument pas obligatoire et tu peux faire la fac de science sans avoir une seule heure de cours de chimie de meme pour l'astrophysique qui est une option que TU choisis. De plus la meca et la chimie de base sont necessaire dans beaucoup de boulot lie a la physique et la chimie (tellement vague comme notion ca...) contrairement au scheme qui ne sert a peu pres que dans des projets universitaire! Je n'ai pas dit que la programmation n'etait pas necessaire, j'ai dit que la programmation fonctionnelle ne l'etait pas dans un cursus general.

            • [^] # Re: Par pitie

              Posté par . Évalué à 3.

              La mission des universites a "tres" legerement change depuis que l'on donne le bac ou du moins l'aurait du. Toutes les etudes montrent que l'universite n'est pas en phase avec les besoins de la societe.

              L'université propose des formations directement professionalisantes dans les IUT et les IUP, le problème c'est que ces formations sont sélectives à l'entrée (et pas forcément bien vues par tous les bacheliers). La licence n'a pas vocation à être professionalisante, mais de conduire au master (qui lui le sera, en principe) ; pourtant, elle récupère tous ceux qui auraient été mieux en IUT mais n'y sont pas allés faute de place.

              Faut-il changer la licence, ou donner plus de moyens aux IUT ?

            • [^] # Re: Par pitie

              Posté par (page perso) . Évalué à 2.

              Tu te plaints d'avoir du faire de la physique meca, chimie et astrophysique.

              Non, je ne me plains pas du tout...

              Dans un cursus a la fac la chimie n'est absolument pas obligatoire et tu peux faire la fac de science sans avoir une seule heure de cours de chimie

              T'es bien gentil, mais ce n'est pas toi qui fait les programmes. C'était obligatoire ! En revanche, mes amis qui ont suivi les voies physique/chimie n'ont pas eu de programmation fonctionnelle...

              contrairement au scheme qui ne sert a peu pres que dans des projets universitaire

              Ça t'apprend à aborder les problèmes d'une autre manière, d'autres concepts. Ce n'est pas inutile. Et c'est sûr que si on apprend que ce qui est utilisé, ça ne risque pas d'évoluer. Les autres langages, tu pourras bien les voir après si ils sont si utilisés.

            • [^] # Re: Par pitie

              Posté par . Évalué à 3.

              La mission des universites a "tres" legerement change depuis que l'on donne le bac ou du moins l'aurait du.

              Le bac qu'on m'a donné en 2000 te dit merde. Je trouve ça insupportable ce côté « le niveau baisse ». Les connaissances transmises au collège ou au lycée sont globalement les mêmes; elles sont juste « mélangées » entre deux pseudo-réformes et ne sont plus enseignées au même niveau (Par exemple: j'ai fait de l'arithmétique « sérieuse » en option maths de Terminale Scientifique, et maintenant une partie de ce que j'y ai fait est enseigné en fin de Troisième ou Seconde, si je ne m'abuse). Je t'invite à regarder les examens d'entrée pour Polytechnique vers le milieu du XIXè siècle (ça se trouve sur le net, mais j'ai perdu mon signet...), et de le comparer à ce qu'on demande désormais pour entrer dans la même école. Un indice : avec mes connaissances au sortir de ma TS, j'aurais eu une chance d'entrer à l'X aux XIXè siècle; pas à l'aube du XXIè.

              En fait, j'aimerais que tu me dises comment tu évalues la « perte de niveau » que tu constates. Il y a d'excellentes vidéos sur ted.com à propos de l'éducation, et de l'évaluation des élèves, et d'à quel point la façon dont c'est effectué (notamment aux USA) est totalement ridicule (exemple : j'ai toujours été nul en examen, notamment parce que la plupart du temps il s'agissait de répéter stupidement ce que racontait le cours, sans réellement avoir besoin de comprendre -- et je sais que je ne suis pas le seul dans ce cas).

              Tu te plaints d'avoir du faire de la physique meca, chimie et astrophysique. Tu as mal lu ce qu'il a dit. Il ne se plaint pas du tout. Il dit au contraire que ça fait partie de sa culture générale.

              Dans un cursus a la fac la chimie n'est absolument pas obligatoire et tu peux faire la fac de science sans avoir une seule heure de cours de chimie de meme pour l'astrophysique qui est une option que TU choisis.

              Ah ben, sauf que si tu vas dans une école d'ingé généraliste par exemple (qui dont est censée être appliquée, orientée pro, tout ça, pas comme la fac quoi), la vérité, c'est que tu auras besoin de toucher à tout (même une école cotée hein, genre une École Centrale). Tu peux bien sûr te spécialiser dans un cursus plutôt info en dernière année, mais en attendant, tu vas bouffer de la méca, de la chimie, des maths, de la RdM, etc. pendant au moins un an, sans doute deux. À côté de ça, les connaissances autour de moi qui sont allées dans ce genre d'école m'ont toutes plus ou moins dit que l'info, ça a été appris sur le tas (en devenant sysadmin pour la résidence étudiante du coin, en écrivant un petit programme pour faire un moteur de recherche et faire du partage p2p en interne, etc.) et pendant les stages, et certainement pas grâce aux dites écoles.

              • [^] # Re: Par pitie

                Posté par . Évalué à -3.

                Dis moi merde cela ne change pas les faits. Le bas est donne depuis que l'on a exige que 80% d'une classe d'age l'obtienne. Le nivellement c'est fait par le bas et les statistiques le montre. Actuellement a la fac arrive des jeunes qui ne savent pas lire, un ami prof en master de geologie me disait recemment qu'il valait mieux ne pas parler d'integration ou de derivation en niveau master car les etudiants ne savaient pas ce que c'etait... On parle de fac de science et oui cela me fait dire que le niveau baisse.

                Apres il y a toujours des exceptions mais la tendance est dans le mauvais sens.

                • [^] # Re: Par pitie

                  Posté par (page perso) . Évalué à 4.

                  un ami prof en master de geologie me disait recemment qu'il valait mieux ne pas parler d'integration ou de derivation en niveau master

                  Rien à voir. Ils savent ce qu'est la dérivation et l'intégration en sortie de lycée. Ils ont simplement oublié car depuis 3 ans (en filière bio/géo) ils n'en ont pas fait...

                • [^] # Re: Par pitie

                  Posté par . Évalué à 2.

                  Si tu me demandes de dériver ou intégrer dans les cas simples (polynômes) je sais faire. Si je dois passer par les cas spéciaux (genre lim ±oo / lim ±oo), j'ai totalement oublié comment on gère le cas. Parce que je n'ai plus eu besoin de faire d'analyse depuis bientôt 8 ans. Idem pour le calcul différentiel (pire en fait : je ne pense plus savoir comment résoudre une équa diff du 2nd ordre).

                  Si tu me donnes un peu de temps pour réapprendre (pas réviser hein, réapprendre) mes cours de lycée/école d'ingé en analyse, je pourrai bien entendu de nouveau faire tout ça (et comme je connais déjà les principes, ça me prendra moins de temps que la première fois). Mais en attendant, j'en suis incapable.

                  Quant aux histoires de 80% d'une classe d'âge arrivée au bac, tout ça : oui, à partir du moment où on passe de quelques centaines/milliers d'étudiants dans le supérieur, à plusieurs dizaines/centaines de milliers, ô surprise, on a plus de « déchets ». Mais dans l'absolu, on a toujours plus de bacheliers capables qu'avant. Si tu veux vraiment parler des 80% d'une classe d'âge tout ça, on devrait aussi faire comme on faisait dans les années 50-60 : concours d'entrée au collège, concours d'entrée au lycée, et baccalauréat en 2 ans (première ET terminale). Ça coco, c'était de la sélection.

                  J'en profite pour remarquer que tu n'as pas réagi au fait que les connaissances d'un élève de TS qui sort de nos jours du lycée pourrait plus facilement prétendre intégrer l'X au XIXè siècle que maintenant. Comme ça resterait un concours, on aurait toujours autant de gens qui intégreraient Polytechnique au final, mais on aurait aussi bien plus de candidats qu'à l'époque...

                  Maintenant, si tu me dis qu'il faudrait revaloriser les études réellement courtes (bacs pro,bacs techno), les formations liées à l'artisanat, etc., là oui je tombe d'accord avec toi, et mécaniquement, ça signifie que moins de gens échoueront dans les autres filières (enfin on peut le supposer). Mais si on forme des étudiants à des métiers dont l'avenir est bouché (genre électro-technique), on fabrique toujours tout plein de chômeurs. Qualifiés, certes, mais chômeurs malgré tout.

                  • [^] # Re: Par pitie

                    Posté par . Évalué à 2.

                    'en profite pour remarquer que tu n'as pas réagi au fait que les connaissances d'un élève de TS qui sort de nos jours du lycée pourrait plus facilement prétendre intégrer l'X au XIXè siècle que maintenant

                    J'avais pas lu ca. C'est cool et cela prouve quoi? Que les scientifiques du XIXe etaient des debiles car ils ne connaissaient pas toutes les methodes mathematiques et les theories physiques qui ont ete mise en place depuis 100 ans? Super exemple.

                    Si l'on comparait avec quelque chose de plus recent? Donne donc un sujet de bac d'il y a seulement 10 ans aux lyceens de Terminal S d'aujourd'hui, tu aurais une drole de surprise. Je ne vois pas comment le niveau peut avoir augmente quand la seule chose qui est faite dans le programme c'est supprime des chapitres. Mais bon je suis un peu debile aussi.

                    Maintenant, si tu me dis qu'il faudrait revaloriser les études réellement courtes (bacs pro,bacs techno), les formations liées à l'artisanat, etc., là oui je tombe d'accord avec toi, et mécaniquement, ça signifie que moins de gens échoueront dans les autres filières (enfin on peut le supposer). Mais si on forme des étudiants à des métiers dont l'avenir est bouché (genre électro-technique), on fabrique toujours tout plein de chômeurs. Qualifiés, certes, mais chômeurs malgré tout.

                    Cela serait trop beau de faire cela mais tu ne me feras pas sortir de la tete que les facs ou se retrouve la majorite des eleves sortant du lycees ne devraient avoir l'enorme majorite de leurs etudiants qui sortent sans avoir la moindre possibilite de trouver du boulot.

          • [^] # Re: Par pitie

            Posté par . Évalué à 3.

            Mmmh, dans l'absolu je serais d'accord avec toi, sauf que euh ...

            1. Les écoles d'ingé ont un nombre de places limitées
            2. Les IUT, STS, IUP itou (dans ma promo d'IUT, nous étions 190 de pris, pour plus de 3000 dossiers de candidature)
            3. Même les Masters en fait !
            4. Beaucoup des gens qui n'ont pas été retenus dans les filières sélectives atterrissent à la fac... À défaut d'avoir trouvé une place ailleurs. Et s'aperçoivent qu'ils subissent un tout autre genre de sélection : qui saura être suffisamment autonome pour travailler dans son coin, sans l'impulsion de profs ? (cela dit cela change petit à petit parce que les profs sont bien conscients du problème, mais n'ont absolument pas les moyens en termes de personnels pour remédier efficacement à la situation)

            Donc, oui, mille fois oui, l'université doit rester un lieu où l'on peut apprendre sans se soucier de « l'utilitaire », mais cela ne devrait pas l'empêcher de proposer une formation professionnalisante. Par cela, je veux dire que les aspects théoriques, etc., peuvent rester, mais que rien n'empêche d'utiliser des technologies plus ou moins « populaires » pour donner un aspect pratique et immédiatement « rentable » quand un étudiant cherche un stage, par exemple. C'est déjà en partie le cas avec les Licences et Masters Pro. Manque de bol, au moins pour les licences pro, j'ai l'impression qu'elles sont principalement empruntées par des gens qui ont déjà un BTS ou un DUT, et que peu de gens venant de Licence généraliste y vont (cela dit, je n'ai pas de chiffres, et c'est possible que mon appréciation pifométrique se plante).

    • [^] # Re: Par pitie

      Posté par (page perso) . Évalué à 5.

      Mais dans cet ouvrage il ne s'agit pas d'apprendre à programmer en Python ou en Java pour que demain vous puissiez bosser chez IBM ou Google.

      Il s'agit d'apprendre la programmation de la simple affectation de valeur à une variable à l'écriture et l'analyse d'un sous-ensemble de C et de Scheme.

      Ce que l'on apprend dans cet ouvrage est utile quand on fait du Python ou du Java.

      De toute manière le plus n'est pas d'apprendre un langage particulier (ça peut aller très vite, surtout avec Python), le plus dur c'est d'apprendre à programmer et à construire ses programmes.

      • [^] # Re: Par pitie

        Posté par . Évalué à 0.

        Et le scheme en tant que langage fonctionelle a une logique qui n'est que tres peu utilise et qui n'a que tres peu d'utilite pour la majorite des personnes qui ecrivent des programmes et qui de tout de facon seront capable de les apprendre par eux meme lorsqu'ils en auront besoin!

        Visiblement cela ne gene personne et surtout pas les profs que les etudiants de facs aient beaucoup plus de difficultes que les filiaires ingenieurs a trouver du boulot apres 4 ou 5 ans a la fac...

        • [^] # Re: Par pitie

          Posté par (page perso) . Évalué à 3.

          Visiblement cela ne gene personne et surtout pas les profs que les etudiants de facs aient beaucoup plus de difficultes que les filiaires ingenieurs a trouver du boulot apres 4 ou 5 ans a la fac...

          Mais le problème ça n'est pas ce qui est enseigné à la fac. Le problème c'est la place de la recherche fondamentale dans des sociétés de plus en plus technicistes et de moins en moins capables de penser les outils qu'ils ont entre les mains (les évènements récents devraient faire réfléchir d'ailleurs...).

          Hé quoi ? Vous voulez que les facs soient des IUT ou des BTS ? Très bien. Au lieu de demander à ce qu'elle change leurs programmes et conserve le nom, demandez les deux : plus de facs, que des BTS et des IUT. Ça c'est cohérent, au moins.

          • [^] # Re: Par pitie

            Posté par . Évalué à 2.

            Sais tu combien d'etudiant entrant en fac de science qui fera de la recherche fondamentale? Meme pas 1%... Les autres ils galerent a trouver du boulot et meme ceux la galerent.

            • [^] # Re: Par pitie

              Posté par . Évalué à 4.

              Si on faisait de la sélection à l'entrée de la fac, tout d'un coup les gens qui en sortent auraient (statistiquement) moins de mal à trouver un job, et sans rien changer au programme.

              • [^] # Re: Par pitie

                Posté par . Évalué à 1.

                Ah mais oui mais ca c'est pas populiste...

            • [^] # Re: Par pitie

              Posté par (page perso) . Évalué à 3.

              Le mardi 15 mars 2011 à 15:55 +0100, Albert_ a écrit :

              . Les autres ils galerent a trouver du boulot et meme ceux la galerent.

              depuis quand les études servent à trouver un job.

              les etudes servent à apprendre des choses, pas à te former faire un
              boulot.

              • [^] # Re: Par pitie

                Posté par . Évalué à 0.

                Mais voyons bien sur... Sais tu que l'enorme majorite des etudiants en sortant de la recherche du travail? Il y a tres peu de personnes qui peuvent se permettre de ne pas travailler dans notre societe. Si c'est le cas pour toi tant mieux mais bon ne te prend pas pour le centre du monde!

                • [^] # Re: Par pitie

                  Posté par (page perso) . Évalué à 2.

                  Le mardi 15 mars 2011 à 19:00 +0100, Albert_ a écrit :

                  Mais voyons bien sur... Sais tu que l'enorme majorite des etudiants en sortant de la recherche du travail?

                  tu peux travailler dans d'autres domaines que ce que tu as appris de
                  manières générale (c'est fréquent dans l'informatique)

                  Il y a tres peu de personnes qui peuvent se permettre de ne pas travailler dans notre societe.

                  Tu peux continuer à étudier parallèlement à une activité professionnelle
                  et si tu veux avoir un diplôme te permettant de valider tes acquis ou de
                  travailler c'est aussi possible aujourd'hui.

                  Si c'est le cas pour toi tant mieux mais bon ne te prend pas pour le centre du monde!

                  LOL.

            • [^] # Re: Par pitie

              Posté par . Évalué à 2.

              En attendant, des cours d'architecture avancée des (micro)processeurs, d'optimisation de code dans le cadre de la compilation, d'optimisation dans les bases de données, etc., tout ça, je ne l'ai fait qu'en Master 2 recherche. Pas en école d'ingé.

              Pire, la programmation parallèle (qui m'est très chère, parce qu'elle va sans doute me permettre de vivre pendant au moins les 10 prochaines années à venir) reste enseignée au niveau Master 1 ou 2 au mieux. La programmation multithreadée est souvent abordée début/milieu de licence informatique — L3 —, mais très succinctement, et souvent sans prendre en compte les différents types de parallélisme, alors que justement, c'est le genre de trucs dont les physiciens, chimistes, biologistes et mathématiciens appliqués risquent d'avoir besoin lors de la simulation de phénomènes plus ou moins complexes !

    • [^] # Re: Par pitie

      Posté par (page perso) . Évalué à 0.

      Mais dans cet ouvrage il ne s'agit pas d'apprendre à programmer en Python ou en Java pour que demain vous puissiez bosser chez IBM ou Google.

      Il s'agit d'apprendre la programmation de la simple affectation de valeur à une variable à l'écriture et l'analyse d'un sous-ensemble de C et de Scheme.

      Ce que l'on apprend dans cet ouvrage est utile quand on fait du Python ou du Java.

      De toute manière le plus n'est pas d'apprendre un langage particulier (ça peut aller très vite, surtout avec Python), le plus dur c'est d'apprendre à programmer et à construire ses programmes.

    • [^] # Re: Par pitie

      Posté par . Évalué à 5.

      C'est que tu rates complètement l'objectif de cet ouvrage.

      Le but n'est pas d'apprendre Scheme pour apprendre Scheme, mais d'utiliser Scheme pour apprendre des concepts et apprendre à raisonner en tant que programmeur. Et là, Scheme a des qualités extra-ordinaire, encore augmenté par les possibilités des dialectes de racket.

      Avec Scheme, et cet ouvrage, on va pouvoir aborder la programmation sous des angles très variés et ainsi balayer un large spectre de connaissance, avec aussi bien du fonctionnel pur (abstraction très importante) que de l'impératif sur machine virtuelle à base de registre (modélisation simple d'un processeur, sans s'encomber de l'inutile pour la majorité des cursus), en assimilant les différents degrés d'abstraction (fonction d'ordre suppérieur, POO), les structures de bases (listes, arbres), les mécanismes en jeu (analyse syntaxique, manipulation de l'AST), des concepts avancés (fermeture, programmation paresseuse, continuation-passing style), en touchant à pas mal de choses (I/O, GUI, Web,…).

      Le tout avec un seul langage, très propre et régulier. Et qui permet d'appréhender les problèmes avec le style qui nous convient le mieux.

      Plein de bonnes choses à mettre dans la tête avant d'apprendre un langage de programmation plus «industriel». Un moyen d'ouvrir l'esprit et de donner une bonne base théorique, surtout avec un temps de cours réduit.

      Quand je vois des ingénieurs diplômés qui ont bouffé du Java et du C pendant des années, mais qui ont une base théorique très (très) pauvre, je suis encore plus convaincu de l'intérêt de ce genre de cours.

  • # desole

    Posté par . Évalué à 1.

    Pour les doublons mais j'ai le magnifique message:

    "Desole un erreur.... " qui apparaissait a chaque fois que je postais.

    • [^] # Re: desole

      Posté par . Évalué à 10.

      Je propose qu'on réécrive Linuxfr en Scheme pour pallier à ce grave problème.

    • [^] # Re: desole

      Posté par (page perso) . Évalué à 1.

      Pareil pour moi.

      Premier gros bug du nouveau DLFP ?

      • [^] # Re: desole

        Posté par (page perso) . Évalué à 2.

        Pareil pour moi.

        Je l'ai remonté dans les commentaires de http://linuxfr.org/suivi/plein-derreur-500-ce-matin

        Premier gros bug du nouveau DLFP ?

        Tout le monde sait que c'est surtout l'interface chaise-clavier qui est en cause ;-) (et les utilisateurs qui ne se mettent pas au Markdown). C'est plutôt un bug comme un autre, avec une erreur cryptique :/

Suivre le flux des commentaires

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