IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Haskell Discussion :

[Haskell] Craft of functional programming


Sujet :

Haskell

  1. #1
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut [Haskell] Craft of functional programming
    Bonjour,

    Par curiosité, et afin d'élargir un peu ma culture informatique, j'expérimente avec Haskell. J'ai sous la main l'ouvrage de Simon Thompson: Haskell: The Craft of functional programming, 2ème édition.

    Est-ce un livre que vous recommanderiez pour un débutant en Haskell et en programmation fonctionnelle ? (je programme surtout en Python, en C et en C++, et mes débuts avec la prog fonctionnelle sont durs, durs) Cet ouvrage date de 1999. Je ne suis pas très au courant de l'évolution du language depuis la fin du siècle dernier. Dans ce contexte, connaissez-vous un ouvrage plus adapté? Avez-vous des retours d'expérience et commentaires ou critiques concernant concernant l'ouvrage cité plus haut?

    Merci d'avance et meilleures salutations

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    peut-être celui-ci : http://www.developpez.net/forums/sho...8&postcount=18


    Haskell for C Programmers
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    [...]depuis la fin du siècle dernier.[...]
    Du millénaire même tu peux dire :mg:


    Le livre proposé par Gorgonite est bien MAIS il a le désavantage de ne pas chercher à t'arracher des racines de la programmation impératives dès le début. Il faut donc peser le pour et le contre avant de faire son choix. Moi je préfère un cours/livre qui m'immerge complètement dans le paradigme.

  4. #4
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Même si je ne suis pas opposé à l'idée de démarrer avec un tuto, c'est vrai que je préfère souvent m'attaquer à un langage avec l'aide d'un livre. Enfin, je vais commencer par jeter un coup d'oeil au tuto proposé et à A Gentle Introduction to Haskell. Ce dernier tutoriel date de la même époque que l'ouvrage de Simon Thompson et semble toujours d'actualité. Je vais démarrer avec ces documents et m'amuser un peu avec ghc.

    N'hésiter pas à continuer de poster vos commandations d'ouvrages et/ou tutos.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  5. #5
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    pour le gentle haskell, lis celui-ci : http://gorgonite.developpez.com/livr...entle-haskell/
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  6. #6
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    pour le gentle haskell, lis celui-ci : http://gorgonite.developpez.com/livr...entle-haskell/
    Cool, cette version m'avait échappé. La version anglaise me convient, mais puisque tu as fait l'effort de la traduire, je ne vais pas faire la fine bouche. Merci pour le lien.

    Que pensez-vous de A Gentle Introduction to Haskell? Est-ce un point de départ adapté?

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  7. #7
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    Que pensez-vous de A Gentle Introduction to Haskell? Est-ce un point de départ adapté?


    perso, je pense qu'il faut avoir un bagage théorique important pour bien comprendre haskell

    bien qu'étant dans le monde des langages fonctionnels, je n'ai pas maîtrisé tous les points de l'ouvrage (mais je pense que cela vient surtout d'une trop forte imprégnation d'OCaml dans ma façon de penser)
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  8. #8
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Si tu peux détailler un peu au sujet du bagage théorique nécessaire pour aborder et comprendre Haskell, ça m'intéresse? Qu'est-ce qui différencie Haskell et OCaml de ce point de vue?

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  9. #9
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    Si tu peux détailler un peu au sujet du bagage théorique nécessaire pour aborder et comprendre Haskell, ça m'intéresse? Qu'est-ce qui différencie Haskell et OCaml de ce point de vue?


    OCaml est un langage opportuniste qui utilise de nombreux paradigmes, et donc qui permet à chaucun de se rattrapper en utilisant ce qu'il connait quand il ne peut pas faire de fonctionnel pur
    disons que tant que tu n'abordes pas les foncteurs, ça reste du lambda calcul typé


    Haskell t'oblige presque immédiatement à penser monades (d'ailleurs on croit qu'Haskell n'a été fait que pour jouer avec les monades )
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Je ne pense pas qu'il faille un fort bagage théorique.
    Pas plus qu'il ne faille savoir comment fonctionne une machine de Turing la première fois que tu vois un programme en Pascal.

    Attention, je ne dis pas que ce n'est pas utile, mais je crois sincèrement que quelqu'un qui fait l'effort de se plonger dans le paradigme apprend l'intuition derrière les notions et peut faire un bon programmeur en fonctionnel sans avoir pour autant un fort bagage. Par contre il faut un minimum de connaissance sur ce que sont les maths. Mais là, n'importe quel étudiante ou étudiante d'un bac scientifique devrait l'avoir. Je ne doute pas que par sa pratique Thierry l'ait.

    Je dis ça en adéquation avec mon expérience de l'enseignement des langages fonctionnels bien sûr.

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    [...]tant que tu n'abordes pas les foncteurs, ça reste du lambda calcul typé
    Il faut un foncteur pour utiliser des mutables ?

  12. #12
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par Garulfo Voir le message
    Il faut un foncteur pour utiliser des mutables ?
    si tu respectes le paradigme fonctionnel et que tu ne joues pas avec les foncteurs, alors... ça semblait évident, mais il faut le dire
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    gorgonite : crois tu vraiment que la connaissance du OCaml est une gêne pour apprendre Haskell ?

    Parce que je viens de OCaml aussi, j'ai plus ou moins appris le Haskell (je sais lire, mais pas écrire), et je trouve qu'au contraire ça aide.

    En effet, il me semble que les bases communes à OCaml/Haskell (et à tous les langages aussi lourdement basés sur ML) sont ce qui fait véritablement ce qu'on appelle "programmation fonctionnelle" (ici, fonctions de premier ordre + récursion + typage statique fort + filtrage de motif).
    Tout ce qu'on doit apprendre en Haskell en venant de OCaml, on doit aussi l'apprendre en venant d'un langage non-fonctionnel comme C/C++, et je pense que c'est encore plus difficile.

    J'irais presque jusqu'à dire (mais je n'ai pas encore d'avis forgé sur la question) que la meilleure façon d'apprendre le Haskell en venant de l'impératif est de passer OCaml (ou SML, mais je connais pas/moins). Ça permet d'apprendre en deux temps, d'abord la programmation fonctionnelle, et après l'évaluation paresseuse et les siouxxeries monadiques (je ne parle pas des types classes, qui passent toutes seules, surtout si on connait les modules/foncteurs). Vu l'effort conséquent que m'a demandé la compréhension des monades, je suis heureux de ne pas avoir à le faire directement.

    Cepenedant, je ne suis pas tout à fait de ça : est-ce que ce n'est pas plus long (même en sautant les fonctionnalités "avancées" qui ne sont pas disponibles en Haskell comme les objets/modules/variantes polymorphes), est-ce que ce n'est pas plus difficile ? D'un point de vue extérieur je comprend bien ce qui pousse à apprendre directement le Haskell : c'est un langage "pur", et donc qui semble plus approprié pour étudier le paradigme fonctionnel. Mais je ne suis pas convaincu.
    Peut-être que les gens qui ont eu la chance de commencer par un Scheme/Lisp ont une expérience similaire à ce sujet.

  14. #14
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par bluestorm Voir le message
    gorgonite : crois tu vraiment que la connaissance du OCaml est une gêne pour apprendre Haskell ?

    ça m'a beaucoup gené... et ça explique pourquoi je fait mes projets fonctionnels en OCaml, alors que j'aimerais parfois faire quelque chose de conséquent en Haskell
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  15. #15
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Bon, pour situer, j'ai fait un doctorat en ingénierie chimique. Je suis actuellement prof. de Génie Chimique dans une école d'ingénieurs. J'enseigne également l'analyse et la simulation numérique à des ingénieurs chimistes et physiciens. Je pense me débrouiller un peu en maths. J'avoue par contre ne pas avoir beaucoup d'expérience avec le lambda calcul d'un point de vue théorique. J'ai entendu prononcer le mot Monade ici ou là sur les forums de Dvp.com, mais cela ne me parle pas vraiment.

    Je débute vraiment avec la programmation fonctionnelle. Peut-être devrais-je commencer par un survol théorique des concepts sous-jacents (et peut-être envisager de transiter par OCaml)? Je regarde cela de plus près et je vous tiens au courant.

    Thierry

    P.S. J'ai longuement hésité avant de me décider pour un langage plutôt qu'un autre. Dans ce fil, c'est le language que recommande Jean-Marc Bourguet. Ses conseils m'ayant souvent été profitables, j'ai opté pour Haskell...
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    Sur quels points exactement ?
    (à part à la rigueur l'habitude de la syntaxe ?)

  17. #17
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu as aussi ce bouquin : Programming In Haskell.

    J'ai entendu prononcer le mot Monade ici ou là sur les forums de Dvp.com, mais cela ne me parle pas vraiment.
    Normal, c'est un concept qu'on rencontre peu en dehors d'Haskell, du moins jusqu'à il y a peu : les monades sont maintenant à la mode, Linq en C# en est une par exemple.

    En bref et pour ne pas faire double emploi avec les 11000 tutoriaux sur le sujet, les monades sont une structure en théorie des catégorie (branche des maths) qui a des applications pratiques en programmation. Dit comme ça ça peut faire peur, mais il n'est pas nécessaire de s'intéresser aux catégories pour utiliser des monades ou même en concevoir. Généralement il faut un peu de temps pour comprendre les monades (on peut commencer à les utiliser sans les comprendre, heureusement), mais une fois cela fait, on s'aperçoit qu'elles facilitent bien la vie, même dans d'autres langages et on est séduit par l'élégance et la simplicité du concept.

    --
    Jedaï

  18. #18
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Merci pour le lien et pour l'explication rapide. Je vais essayer de lire un ou deux des 11'000 didacticiels sur le sujet.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  19. #19
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    Merci pour le lien et pour l'explication rapide. Je vais essayer de lire un ou deux des 11'000 didacticiels sur le sujet.
    Je te conseille de commencer par là : All about monad. J'espère que tu es confortable avec l'anglais ? Parce que sinon je vais être tenté de rédiger un tutoriel en français et le monde n'a pas besoin d'un tutoriel sur les monades de plus...

    --
    Jedaï

  20. #20
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    si tu respectes le paradigme fonctionnel et que tu ne joues pas avec les foncteurs, alors... ça semblait évident, mais il faut le dire
    Euh.. j'ai pas compris ta réponse.
    Bon je résume... tu as dit: « tant que tu n'abordes pas les foncteurs, ça reste du lambda calcul typé » ... donc je me demande si on a besoin des foncteurs en oCaml pour utiliser des mutables. Parce que si non, ça n'est pas très lambda calcul... si oui, alors je ne le savais pas

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/05/2015, 15h48
  2. Functional Reactive Programming en Java
    Par CyaNnOrangehead dans le forum Langage
    Réponses: 54
    Dernier message: 03/11/2013, 00h24
  3. parser recursif programming haskell
    Par jjinkou2 dans le forum Haskell
    Réponses: 4
    Dernier message: 28/04/2011, 11h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo