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.
[^] # Re: Le plus adapté semble l'OCaml de l'INRIA.
Posté par gasche . En réponse au message Quel langage fonctionnel pour commencer?. Évalué à 2.
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.