• # Moi == pas doué, je suppose....

    Posté par . En réponse au journal Haskell et le tri. Évalué à 3.

    Je vais commencer par le commencement... Haskell, un langage dont je n'ai lu que du bien. ouai, promis, je n'en ai que lu, et c'était uniquement du bien.
    Bon.

    Maintenant, tu as réussi à me perdre sur un simple tri...

    Sort

    Cette fonction s'appelle sort et a comme signature :

    sort :: Ord a => [a] -> [a]
    Dit autrement, c'est une fonction qui prend [a], une liste de n'importe quel type a et renvoie une liste de n'importe quel type a. Seule contrainte sur a, ce type doit être Ordonable, c'est à dire que on doit pouvoir comparer les éléments de a entre eux. La liste est une liste simplement chaînées et elle est non modifiable, ainsi le tri ne se fait pas en place, mais crée une nouvelle liste.

    Cela ressemblerait un peu à cette fonction en c++ :

    template
    std::list sort(const std::list &l);

    Bon, que je sois mauvais ou non n'est pas vraiment important, j'espère... mais, pour le coup, toi, tu es mauvais pédagogue. En tout bien tout honneur bien sûr, et chacun son job. Prof, c'est manifestement ni mon métier (sachant que, pour le moment, j'ai pas de taf, si ça veut dire quelque chose), ni le tien. Je ne dis pas ça pour t'empêcher de faire de nouveaux journaux, au contraire... et puis merde, je vais balancer le reste sans politiquement correct, et faire confiance à ton sens critique, puisqu'après tout, tu postes sur linuxfr.

    La première chose qu'il me semble importante de noter, c'est l'aspect très... matheux, du langage. C'est con à dire, mais, moi, j'ai jamais été un matheux. Ouai, ok, j'ai un bac sti "génie" électronique, mais je me tapais des 8 en maths, quand, en physique je tapais du 13+ et du 15+ en élec.

    Le rapport? C'est simple, très simple, mais peut-être aussi lié à la résistance au changement (oui, j'ai aussi étudié la gestion de projet, même si... peu importe): la syntaxe de ton exemple est absolument imbuvable.
    Soyons sérieux, un instant. Ta fonction, elle prend [a] en argument. Soit. dans ton exemple de déclaration, je vois le [a] 2 fois. Quelle occurrence est donc le paramètre, histoire que l'on puisse au moins deviner quelle autre occurrence est le retour?
    Le coup du ordonnable (2n, au passage, me dit mon correcteur), on le remarque comment? Encore une fois, tu me rejette dans mon ignorance crasse, et ça me semble mauvais en terme de pédagogie.
    Ensuite, une "liste simplement chaînées" (j'ai reproduit le 's' après quelques secondes d'hésitations, parce que ça me fait chier de jouer les nazi du french) et non modifiable. Le haskell semble séduire quelques utilisateur du C++, mais je n'ai jamais compris (ni cherché) pourquoi? Ok, une liste simple, ça veut dire 1 pointeur de moins par élément, soit 8 bytes (ou octets en français, mais le terme est moins précis, niveau sémantique, un byte n'étant pas forcément constitués de 8 bits) et dans le cas de haskell c'est du const. Bien. Pourquoi pas. Mais dans ce cas, quel est l'impact en terme de perfs lorsqu'une fonction à pour simple but de construire une liste chaînée? Doit-elle être copiée-collée? J'espère bien que non.

    Bref, ton journal est bien trop... hum... c'est cru, mais mon sentiment, alors, voilà: imbu de ta connaissance.
    Tu sembles oublier que l'on ne maîtrise pas tous le Haskell, ni sa syntaxe.
    Le C, à imposé sa syntaxe comme un quasi-standard. Le pascal aussi. Les paradigmes de ces langages sont peut-être moins efficaces (ref. souhaitée) mais plus adaptés à la façon de penser des gens normaux (ref souhaitée aussi), c'est à dire pas théoriciens des langages ni matheux (ref souhaitée encore, notez comme je m'auto-troll).
    Une question simple, pour clore ce déjà trop long post: pourquoi ne pas nous montrer le traditionnel hello world, en C, puis en C++ (2 langages différents pour moi, bien que très proches), puis en JS (à la mode), python (idem), et enfin haskell?
    Même si le hello world ne montre quasiment rien du langage, il permets au moins aux devs de savoir comment écrire un programme qui ne fait rien. C'est, l'ai de rien, très important de savoir faire un truc qui ne fait rien avec le minimum de code. En fait, c'est la base pour savoir écrire un programme qui fait uniquement ce qu'on lui demande.

    PS: je n'ai lu que le court passage que j'ai cité. Ça m'a déjà semblé trop inaccessible, trop chiant. Cool, on est dredi.