Forum Programmation.autre Quel langage fonctionnel pour commencer?

Posté par  .
Étiquettes : aucune
0
13
jan.
2008
Presque tout est dans le titre.

Je sais déjà me débrouiller en C, C++ ou ruby et j'aimerais bien apprendre un langage fonctionnel. En fait, je cherche surtout un bon tuto pour commencer qui ne me réexplique pas à quoi sert un if, mais qui ne soit pas non plus trop "mathématique" (j'avais vu un tuto sur ocaml qui m'avait vraiment pas donné envie!). Bref, qu'est ce que vous connaissez comme bon tuto sur Haskell, ocaml, lisp,... Et n'hésiter pas à troller précher pour votre langage favori pour me faire envie.

Merci
  • # re

    Posté par  (site web personnel) . Évalué à 0.

    Je pense que pour apprendre un langage fonctionnelle faut quand meme des bases mathematique comme la logique propositionnel et les sequents.
    • [^] # Re: re

      Posté par  . Évalué à 3.

      Je suis matheux à la base, je ne connais pas la logique propositionnelle, je ne sais pas ce que sont les sequents.

      Ca ne m'empêche pas de bien aimer la prog fonctionnelle, de bien me débrouiller en OCaml. Et je ne pense pas qu'utiliser un langage fonctionnel impose grand chose. Je connais des gars pas matheux pour un sous qui adorent la prog fonctionnelle.

      Par contre pour ce qui est des tutos je sais pas...
  • # Le plus adapté semble l'OCaml de l'INRIA.

    Posté par  . Évalué à 1.

    Il y a plusieurs possibilités, chacune ayant ses avantages et ses inconvéniants.
    Principalement, on a :

    - Les langages de la famille Lisp, caractérisés par :
    · Une syntaxe so çekçy ;
    · Une syntaxe un peu lourde et qui demande un peu d'habitude ;
    · Proches de la perfection ;
    · Faciles à apprendre ;
    · Emacs est basé sur l'Elisp, donc posibilité de coder pour Emacs :D ;
    · L'Outil DrScheme et la présence de nombreux livres permettent un apprentissage rapide et efficace du Scheme (l'un des principaux dialectes LISP, l'autre étant Common Lisp).

    - Le Haskell, que je ne connais pas beaucoup, mais dont certaines caractéristiques sont :
    · Un langage pur (pas d'effets de bords et tout et tout, sûrement le langage fonctionnel le plus parfait) ;
    · Plus difficile à apprendre ;
    · Une syntaxe moche et illisible (c'est juste mon avis perso) ;
    · Des compilos lourds... très lourds (mais c'est juste une question d'implémentation, y'en a ptêtre des bien et légers que j'connais pas).

    - Les langages ml et spécialement caml/Ocaml qui apportent :
    · Une syntaxe simple, lisible, mais moins belle que celle du LISP ;
    · Facile à apprendre, très bien documenté, facile à utiliser ;
    · Proche de la perfection :D ;
    · Performant ;
    · Pleins pleins d'avantages exposés la page wikipedia qui est très bien faite.

    Personnellement, je conseillerai plutôt le caml ( http://caml.inria.fr/ocaml/index.fr.html ) car c'est le plus adapté aux débutants dans le fonctionnel.

    Chacun de ces langages dispose de bonnes implémentations, adaptés pour de nombreuses utilisations (à part le Common Lisp, dont il n'existe aucun compilateur/interpréteur correct qui gère les librairies graphiques). La plupart du temps, il est possible de les interpréter, de les byte-compiler (pour accroître les performances tout en gardant une portabilité maximale), ou de les compiler nativement.
    • [^] # Re: Le plus adapté semble l'OCaml de l'INRIA.

      Posté par  . Évalué à 2.

      Je conseille moi aussi OCaml, mais pas exactement pour les mêmes raisons.

      OCaml est en effet un langage très puissant, très rapide, portable, toussa.
      C'est très bien pour un langage, mais je dirais que c'est pas non plus l'essentiel quand veut apprendre un paradigme de programmation.
      Plus exactement, je souhaite expliquer dans le reste de mon post pourquoi OCaml serait le meilleur choix même s'il était moche et lent :p


      Au niveau du langage (ses fonctionnalités, ce qu'il te permet de faire, ce qu'il t'encourage à faire) OCaml est un juste milieu admirable. Il est fonctionnel, mais pas uniquement : si tu veux faire du code impératif par moment, parce que c'est plus adapté au problème, tu peux le faire simplement.

      Je pense qu'il est plus facile d'approcher efficacement la programmation fonctionnelle avec OCaml (ou Caml, ou sans doute SML) qu'avec Scheme/Lisp :
      - c'est un langage qui met plus en avant la programmation fonctionnelle (listes mutables par défaut, etc...)
      - il possède des features qui n'existent pas de base en Lisp/Scheme, et qui sont assez cruciales dans la programmation fonctionnelle moderne : typage fort (et en plus, inféré), types algébriques et filtrage de motifs

      Je pense qu'il est aussi plus facile d'aborder OCaml que Haskell, surtout quand on vient de l'impératif :
      - on peut "facilement" faire de la programmation impérative, ou en partie impérative. Ça permet à mon avis une adaptation plus en douceur (mais sans complaisance : la plupart des camliens favorisent fortement le style fonctionnel). L'équivalent Haskell (les monades) est vraiment difficile à comprendre pour un débutant en programmation fonctionnelle, et assez lourd à utiliser.
      - l'évaluation est stricte par défaut : tu n'as pas à apprendre en plus directement l'évaluation paresseuse, qui (malgré ses nombreuses qualités par ailleurs) vient avec un coup de compréhension non négligeable, et pose de nombreux problèmes (et pas seulement aux débutants). Elle n'est absolument pas nécessaire pour apprendre la programmation fonctionnelle, et par ailleurs je pense même qu'il est plus facile de l'aborder calmement dans un langage où elle est explicite (comme en OCaml) que dans un langage où elle est implicite (comme en Haskell).

      Bref, je pense que OCaml est un compromis idéal entre la simplicité et la représentativité des concepts de programmation fonctionnelle moderne.
  • # Tu auras forcément un peu de maths, ou assimilé

    Posté par  . Évalué à 2.

    "programmation fonctionnelle" est un terme qui a beaucoup de significations différentes. Une définition (légèrement caricaturale) qui a tendance a ne fâcher personne serait :
    la programmation fonctionnelle, c'est l'utilisation en programmation de techniques d'abstraction puissantes, rigoureuses, belles et érotiques, inspirées des mathématiques

    Tu auras donc forcément un peu de mathématiques à un moment ou un autre. Si tu n'as pas de mathématiques, tu auras au moins des concepts qui utilisent franchement la même (voire les mêmes) parties du cerveau. Si tu ne peux pas *du tout* blairer les mathématiques, tu risques d'avoir de problèmes (mais, qui sait, c'est peut-être aussi le moment d'une révélation ?).

    Après, il y a maths et maths, tu peux trouver des approches de la programmation fonctionnelle très formelles, d'autres moins. Si un document t'as semblé trop mathématique (tu aurais un lien à ce sujet ?), tu pourras sûrement trouver plus abordable.

Suivre le flux des commentaires

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