Publicité
+ Répondre à la discussion
Page 1 sur 4 1234 DernièreDernière
Affichage des résultats 1 à 20 sur 77
  1. #1
    Rédacteur
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2006
    Messages : 1 076
    Points : 1 867
    Points
    1 867

    Par défaut Débuter en programmation fonctionnelle

    Bonjour tout le monde !

    Pfffffff, je suis influençable au possible, je vois Gnux, Gorgonite, InOCamlWeTrust et d'autres parler de programmation fonctionnelle, et voilà que me trouve complètement inculte de ne connaître aucun langage fonctionnel...

    Je révise donc mes connaissances de base de la programmation fonctionnelle (récursion terminale, transparence référentielle,...) et je me dit que ma foi je pourrrais au moins essayer.

    LA question, avec quel langage ? D'après ce que j'ai compris, Scheme serait assez bien adapaté à la situation. Mais bon, il y a aussi (Common) Lisp, OCaml, Haskell... Et vu mes immenses connaissances de la prog fonctionnelle, quand je lit les avantages et inconvénients de chaque langage, je comprend pas vraiment tout.

    Alors, qu'est ce que vous pourriez conseiller à un pov' étudiant qui ne connais que la prog impérative et la prog OO pour se lancer dans le fonctionnel ? Un langage qui si possible m'évite d'éventrer mon PC parce que je comprend rien, et qui tourne sous Windows ?

    PS : ça me fait bizzare de demander ça, d'habitude c'est moi qui répond à ce type de question (avec une tendance à conseiller le Python pour les débutants total)
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  2. #2
    Expert Confirmé Sénior

    Inscrit en
    novembre 2005
    Messages
    5 103
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 5 103
    Points : 5 986
    Points
    5 986

    Par défaut

    Haskell. Peut-être pas celui que je conseillerais à celui qui veut faire un programme, mais pour découvrir la programmation fonctionnelle, je n'hésite pas.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  3. #3
    Membre Expert

    Homme Profil pro
    Inscrit en
    juillet 2003
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : juillet 2003
    Messages : 2 077
    Points : 2 476
    Points
    2 476

    Par défaut

    Citation Envoyé par Jean-Marc.Bourguet
    Haskell. Peut-être pas celui que je conseillerais à celui qui veut faire un programme, mais pour découvrir la programmation fonctionnelle, je n'hésite pas.
    Pour une fois je ne suis pas d'accord...Il est vrai que Woufeil est un codeur perl et que faire du Haskell ne peut lui être que utile (cf pugs).
    Mais perso moi pour qq'un qui veut commencer en programmation fonctionnelle je conseillerais ce que tu m'as conseillé il y à 3 mois et qui fait que je m'y suis intéressé: Scheme...
    Rappelle toi: tu m'avais donné le lien vers SICP...Et aujourd'hui tu lui conseilles Haskell qui certes est un langage fonctionnel pur mais...
    De fait c'était un excellent conseil.

  4. #4
    Invité de passage
    Inscrit en
    octobre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 3
    Points : 2
    Points
    2

    Par défaut

    Je ne suis pas un pro, je débute en programmation fonctionnelle.
    À mon avis Caml est une bonne solution, car :
    • je m'y suis mis et c'est vraiment très clair, très mathématique
    • c'est ce que les prépas utilisent comme langage pour initier les pauvres taupes que nous sommes à la pogrammation
    Voilà, en espérant que ça t'aide (je suppose que non : ça fait un choix différent supplémentaire recommandé :p)


    GdB

  5. #5
    Expert Confirmé Sénior

    Inscrit en
    novembre 2005
    Messages
    5 103
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 5 103
    Points : 5 986
    Points
    5 986

    Par défaut

    Citation Envoyé par Gnux
    Mais perso moi pour qq'un qui veut commencer en programmation fonctionnelle je conseillerais ce que tu m'as conseillé il y à 3 mois et qui fait que je m'y suis intéressé: Scheme...
    Tu avais demandé un bouquin, il a demandé un langage... La nuance a entraîné une réponse en effet très différente. Dans le genre de la réponse que je t'ai faite, il y a aussi Concepts, Techniques and Models of Computer Programming de van Roy et Haridi qui a un champs au dela de la programmation fonctionnelle.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  6. #6
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro Nicolas Vallée
    Ingénieur d'études
    Inscrit en
    décembre 2005
    Messages
    10 209
    Détails du profil
    Informations personnelles :
    Nom : Homme Nicolas Vallée
    Âge : 30
    Localisation : France

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

    Informations forums :
    Inscription : décembre 2005
    Messages : 10 209
    Points : 16 756
    Points
    16 756

    Par défaut

    si ton but est uniquement d'avoir une culture en programmation fonctionnelle, et que tu ne seras frustré de ne pas trop coder, je peux te conseiller d'étudier le lambda-calcul et la théorie des types...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  7. #7
    Rédacteur
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2006
    Messages : 1 076
    Points : 1 867
    Points
    1 867

    Par défaut

    Donc, grosso modo à part Lisp et ses dérivées, les langages fonctionnels les plus connus on tous étaient cités, (je compte ML dans OCaml)

    Citation Envoyé par Jean-Marc.Bourguet
    Peut-être pas celui que je conseillerais à celui qui veut faire un programme, mais pour découvrir la programmation fonctionnelle, je n'hésite pas.
    Citation Envoyé par gorgonite
    si ton but est uniquement d'avoir une culture en programmation fonctionnelle, et que tu ne seras frustré de ne pas trop coder, je peux te conseiller d'étudier le lambda-calcul et la théorie des types...
    Certes je veux faire de la découverte, mais si ces connaissances peuvent me servir pour plus tard, tant mieux

    L'argument qui dit que c'est le lange enseigné en prépa ne compte pas, je suis en IUT, et je ne vais pas apprendre de langage fonctionnel

    Quelle différence existe-t-il entre le Haskell et le Scheme ? D'après ce que j'ai compris, Sheme est un langage très épuré, contrairement à Haskell.

    D'après le peu de codes que j'ai lu dans les deux langages (les codes présents sur wikipedia), le Haskell me semble plus compréhensible que le Scheme, mais c'est peut être parce que je ne suis pas habitué à la syntaxe.

    Après, très important, existe-t-il de bons tutoriaux en Français pour les deux langages ? Pour un langage impératif ou orienté objet, l'Anglais ne m'aurait pas spécialement dérangé, mais là je ne maîtrise pas du tout le vocabulaire, donc je préfère avoir du Français directement...
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  8. #8
    Expert Confirmé Sénior

    Inscrit en
    novembre 2005
    Messages
    5 103
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 5 103
    Points : 5 986
    Points
    5 986

    Par défaut

    Citation Envoyé par Woufeil
    Certes je veux faire de la découverte, mais si ces connaissances peuvent me servir pour plus tard, tant mieux
    Le lambda calcul ne sert pas à faire des programmes. Les lisps (dont scheme) sont assez proche du lambda calcul.

    Tu peux faire des programmes en Haskell, mais si ton objectif est de faire la grande application qui va révolutionner le monde, je te déconseille de la faire en Haskell tout en apprenant le langage.

    Quelle différence existe-t-il entre le Haskell et le Scheme ? D'après ce que j'ai compris, Sheme est un langage très épuré, contrairement à Haskell.
    Il y a plus de concepts qui semblent étranges quand on n'en a pas l'habitude en Haskell qu'en Scheme. (Ou alors c'est parce que j'ai appris Haskell bien après des lisps que ça me fait cet effet là).

    D'après le peu de codes que j'ai lu dans les deux langages (les codes présents sur wikipedia), le Haskell me semble plus compréhensible que le Scheme, mais c'est peut être parce que je ne suis pas habitué à la syntaxe.
    Je crois que c'est ça.

    Après, très important, existe-t-il de bons tutoriaux en Français pour les deux langages ?
    Aucune idée.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  9. #9
    Rédacteur
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2006
    Messages : 1 076
    Points : 1 867
    Points
    1 867

    Par défaut

    Citation Envoyé par Jean-Marc.Bourguet
    Le lambda calcul ne sert pas à faire des programmes. Les lisps (dont scheme) sont assez proche du lambda calcul.
    Je ne comprend pas bien ce que tu veux dire.... Si par programme tu entends application complexe et pas simple implémentation d'algorithme, dans ce cas je te dirais que çe ne me dérange pas que Scheme ne soit pas fait pour faire des programmes.
    De plus, je suis jeune, donc si Sheme me permet une approche plus facile de la prog fonctionnelle mais m'offre moins de possibilités que Haskell, ça ne me dérange pas, j'aurais tout le temps de passer à Haskell par la suite

    Citation Envoyé par Jean-Marc.Bourguet
    Tu peux faire des programmes en Haskell, mais si ton objectif est de faire la grande application qui va révolutionner le monde, je te déconseille de la faire en Haskell tout en apprenant le langage.
    Non, si je devais faire la grande application qui révolutionne le monde, je pense que je le ferais en Java (le Perl n'étant pas fait pour créer des programmes qui révolutionnent le monde)
    Plus sérieusement, c'est par simple culture que je m'y intéresse, mais si ça peut ne pas être purement théorique, je préférerais.
    Je n'est absolument aucune ambition avec la prog fonctionnelle si ce n'est de mieux la comprendre. Donc sije choisis d'apprendre Haskell, je me contenterais de l'apprendre, je ne tenterais pas de faire un développement complexe avec.
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  10. #10
    Expert Confirmé Sénior

    Inscrit en
    novembre 2005
    Messages
    5 103
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 5 103
    Points : 5 986
    Points
    5 986

    Par défaut

    Citation Envoyé par Woufeil
    Je ne comprend pas bien ce que tu veux dire....
    Gorgonite te proposait le lambda-calcul. C'est un formalisme mais pas un langage de programmation. Si tu veux un langage de programmation, proche du lambda-calcul, les lisps sont adéquats à faire des applications complexes.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  11. #11
    Rédacteur
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2006
    Messages : 1 076
    Points : 1 867
    Points
    1 867

    Par défaut

    Ah, tu m'as fait peur, je croyais que tu voulais dire que les Lisp n'étaient fait pour programmer. Un langage de programmation non fait pour programmer, ça me faisait tout drôle

    Je pensais que la majorité des gens allaient me conseiller le Scheme, mais je vois que ce n'est pas le cas.

    Disons que pour réduire les choix, j'hésite entre Scheme en Haskell.

    En quoi Jean-Marc trouves tu le Haskel bien pour débuter en fonctionnel ?
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  12. #12
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro Nicolas Vallée
    Ingénieur d'études
    Inscrit en
    décembre 2005
    Messages
    10 209
    Détails du profil
    Informations personnelles :
    Nom : Homme Nicolas Vallée
    Âge : 30
    Localisation : France

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

    Informations forums :
    Inscription : décembre 2005
    Messages : 10 209
    Points : 16 756
    Points
    16 756

    Par défaut

    Citation Envoyé par Woufeil
    En quoi Jean-Marc trouves tu le Haskel bien pour débuter en fonctionnel ?


    tu pourras voir à peu près la même chose qu'en Scheme, et tester l'évaluation paresseuse, voire plus si tu vas jusqu'au modèle des monades...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  13. #13
    Membre chevronné Avatar de HanLee
    Profil pro
    Inscrit en
    mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 27
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : mai 2004
    Messages : 738
    Points : 772
    Points
    772

    Par défaut

    Y'a un avantage à faire du Haskell sur OCaml au niveau prog fonctionnelle ?

  14. #14
    Expert Confirmé Sénior

    Inscrit en
    novembre 2005
    Messages
    5 103
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 5 103
    Points : 5 986
    Points
    5 986

    Par défaut

    Citation Envoyé par HanLee
    Y'a un avantage à faire du Haskell sur OCaml au niveau prog fonctionnelle ?
    Je ne connais pas assez OCaml pour commenter beaucoup, mais il me semble que c'est un langage multiparadigme. Un avantage d'un langage plus "pur", c'est de voir plus facilement les limites du paradigme unique utilisé.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  15. #15
    Membre chevronné
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2004
    Messages : 679
    Points : 697
    Points
    697

    Par défaut

    Malgré que j'aie appris la programmation fonctionnelle en utilisant O'Caml, je recommenderais le langage Scheme.

    Si tu lis en anglais, les livres en ligne Structure and Interpretation of Computer Programs et How to Design Programs (pour les débutants en programmation, mais il y a de la très bonne information pour commencer en Scheme) sont deux bonnes références. Il y a les vidéos du cours 6.001 du MIT, le cours qui utilise le livre SICP, qui sont très bons. L'environnement DrScheme est aussi un atout. À noter que pour l'utiliser dans le contexte du SICP, tu dois configurer le niveau du langage à R5RS.

    Tu apprendras rapidement comment utiliser des listes en Scheme (cons, car, cdr), comment faire une opération itérative et une opération récursive (attention, la différence n'est pas que l'opération récursive s'appelle elle-même), comment utiliser des fonctions comme arguments et comme valeur de retour de d'autres fonctions, etc. Des heures de plaisir

    Bonne chance dans ton apprentissage.

  16. #16
    Membre Expert

    Homme Profil pro
    Inscrit en
    juillet 2003
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : juillet 2003
    Messages : 2 077
    Points : 2 476
    Points
    2 476

    Par défaut

    Citation Envoyé par Jean-Marc.Bourguet
    Tu avais demandé un bouquin, il a demandé un langage... La nuance a entraîné une réponse en effet très différente. Dans le genre de la réponse que je t'ai faite, il y a aussi Concepts, Techniques and Models of Computer Programming de van Roy et Haridi qui a un champs au dela de la programmation fonctionnelle.
    Il est très bon et j'aime bcp son approche de l'enseignement par micromondes avec agents enrichis. L'ennui est toujours le même: ces livres sont réellement difficiles à trouver, y compris dans de grandes bu. Ainsi a lyon, Van Roy ils ne connaissent pas...
    Les échos viennent donc de son site + LtU. Ils donnent d'ailleurs certains slides de cours sur son site qui sont pas mal aussi par contre je ne sais pas du tout ce que vaut le langage de support utilisé (Oz).
    Tu te les procures où toi les bouquins d'info pointus? Tu les achètes systématiquement ou tu as réussi à trouver un repaire?

  17. #17
    Expert Confirmé Sénior

    Inscrit en
    novembre 2005
    Messages
    5 103
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 5 103
    Points : 5 986
    Points
    5 986

    Par défaut

    Citation Envoyé par Gnux
    Tu les achètes systématiquement ou tu as réussi à trouver un repaire?
    J'achète. J'ai une âme de bibliothécaire.

    J'achète même des bouquins d'occasion datant des années 60 et 70. Ça c'est mon âme d'historien.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  18. #18
    Membre Expert

    Homme Profil pro
    Inscrit en
    juillet 2003
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : juillet 2003
    Messages : 2 077
    Points : 2 476
    Points
    2 476

    Par défaut

    Citation Envoyé par Jean-Marc.Bourguet
    J'achète. J'ai une âme de bibliothécaire.

    J'achète même des bouquins d'occasion datant des années 60 et 70. Ça c'est mon âme d'historien.
    Moi je suis bibliothécaire mais aussi chomeur donc...Moi aussi j'aime bien les vieux bouquins. L'autre jour j'ai acheté pour une bouchée de pain la 1ere édition de Operating Systems, Design and Implementation pour une bouchée de pain.
    J'étais super content: 5€ pour un bouquin de 25 ans d'age...Même mon Dragon Book est patiné dans sa seconde édition (alors que la 3e vient de sortir alors j'aurais pu le trouver neuf dans sa seconde mais...on se refait pas. J'aime chiner les bouquins...)

  19. #19
    Membre Expert
    Avatar de InOCamlWeTrust
    Inscrit en
    septembre 2006
    Messages
    1 036
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 1 036
    Points : 1 129
    Points
    1 129

    Par défaut

    Bon, un tour de table bien fait me paraît important.

    Il existe deux types de programmation fonctionnelle : la pure, et l'impure, qui peut donner lieu à des effets de bords. A celà s'ajoute aussi le fait que certains langages sont paresseux et pas d'autres...

    Un langage paresseux est un langage n'évaluant les arguments des fonctions que lorsque l'on en a réellement besoin ; un langage strict est exactement l'inverse. Le C est strict, Lisp et Scheme aussi (à moins que je me trompe). Haskell, lui, est paresseux ; par exemple, on peut construire des listes infinies sans problèmes : la liste sera construite automatiquement au fur et à mesure que les éléments seront utilisés dans le programme.

    Programmer dans un langage pur et strict me paraît être une mauvaise idée, car il s'agit de deux notions contradictoires, ou du moins qui ne collent pas bien entre elles.

    Par contre, utiliser un langage paresseux et pur comme Haskell est un vraie bonne idée, car on en arrive à la base de la programmation fonctionnelle, c'est-à-dire s'abstraire des contraintes de la machine pour ne s'occuper que du résultat.

    OCaml, lui, rassemble toutes les notions de tous les langages existant :

    1- il est fonctionnel, strict, impur (bien qu'il soit possible de programmer sans effets de bords) et possède des structures paresseuses comme les flots ou les constructions avec le mot-clef "lazy"

    2- il possède un langage de modules particulièrement puissant, avec notament la possibilité de construire des foncteurs (modules prenant en argument d'autres modules)

    3- c'est un langage de classes totalement polymorphe

    4- enfin, il possède un pré-processeur de la mort qui tue relégant au stade d'antiquité préhistorique celui du C, Camlp4

    Si je devais conseiller un langage fonctionnel, ce serait celui-là : les autres (Scheme et Lisp en particulier) sont trop difficiles à appréhender lorsque l'on veut faire des applications complexes, car ils laissent relativement peu de marge au programmeur.

    Haskell serait aussi un bon choix, à ceci près qu'il possède énormément de particularités, souvent déroutantes pour des gens qui proviennent même du domaine fonctionnel : entre autres, les monades, très délicates à expliquer, et le système de classes, qui se situe un niveau au-dessus de ce que tu peux connaître. En effet, en Haskell, une classe regroupe des types et non des objets !

    On peut en fait voir OCaml comme un langage un poil plus "bas niveau" que Haskell... à ceci près qu'en OCaml on ne se prend pas la tête avec la façon dont on va implanter tel ou tel algorithme...

  20. #20
    Expert Confirmé Sénior

    Inscrit en
    novembre 2005
    Messages
    5 103
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 5 103
    Points : 5 986
    Points
    5 986

    Par défaut

    Citation Envoyé par Gnux
    Ils donnent d'ailleurs certains slides de cours sur son site qui sont pas mal aussi par contre je ne sais pas du tout ce que vaut le langage de support utilisé (Oz).
    J'ai joué un peu avec. J'ai rien de particulier à en dire.

    Il faut avouer que je suis plus fasciné pour le moment par le typage statique.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •