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

Langages fonctionnels Discussion :

Comparaison de Scheme, Ocaml, lisp et prolog


Sujet :

Langages fonctionnels

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Points : 22
    Points
    22
    Par défaut Comparaison de Scheme, Ocaml, lisp et prolog
    Bonjour tout le monde, je debute dans la programmation fonctionelle et j'ai besoin de votre aide, si vous le pouvez bien sur, sur quelque chose. J'aimerai avoir un tableau comparatif complet entre ces Scheme, Ocaml, lips et prolog, SVP. Si quelqu'un a un lien interessant, ca sera sympa de me le passer.
    Un trés grand merci d'avance à tout le monde.

  2. #2
    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
    Déjà Prolog n'est pas un langage de programmation fonctionnel, mais logique, ce qui est complètement différent (le seul point commun ou presque c'est que ce sont tout deux des paradigmes de programmations qui ne sont pas bien connus du "grand public" des programmeurs au jour d'aujourd'hui).

    Tu devrais peut-être considérer Haskell également dans tes choix de langage fonctionnel.

    --
    Jedaï

  3. #3
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Tout dépend de ce que tu veux faire.

    Veux-tu simplement jouer avec ? Changer de langage de programmation et en faire ton premier langage ? Apprendre sans en être u expert ?

    Si tu n'as pas d'obligation de travail avec Lisp ou Scheme, je te conseille de les oublier : leurs concepts sont assez lointains de ceux de Haskell et OCaml (entre autres, le typage).

    OCaml et Haskell sont les deux seuls langages qui aujourd'hui bénéficient d'un soutien suffisant pour programmer une application entière (de la tête aux pieds j'entends).

    OCaml est un langage fonctionnel strict fortement typé, avec lequel on peut aussi faire de la programmation impérative, objet-impérative, et (beaucoup plus rare) objet-tout-fonctionnelle. Sa force réside dans le fait qu'il est multi-paradigmes, et il est donc rare pour un nouveau venu de s'y perdre.

    Haskell est fonctionnel pur, paresseux et fortement typé au sens des classes de types Haskell (un truc propre à ce langage). Il est extrêmement intéressant, théoriquement parlant, mais plus difficile à apprendre, notament à cause des concepts de classes de types et des monades. Cependant, il possède un avantage par rapport à OCaml : il est plus petit, et on peut raisonnablement espérer l'avoir appris en quelques mois, voire quelques semaines... ce qui n'est absolument pas le cas d'OCaml, si tu as envie de le maîtriser à fond !

    Concernant les implantations de ces langages, OCaml est un langage à implantation unique : c'est l'équipe GALLIUM de l'INRIA qui s'en charge désormais. Haskell, par contre, est implanté par de nombreuses équipes et parmis elles, les universités les plus prestigieuses anglo-saxones : Glasgow avec GHC, Yale avec Yhc, Nottingham avec Nhc, et autres... De tous, GHC l'emporte haut la main, bien que Hugs soit meilleur pour apprendre le langage (car beaucoup plus simple).

    De façon générale, on peut dire que, quelque soient les implantations de Haskell, l'implantation du langage OCaml est beaucoup plus mature ; entre autres, son système de Garbage Collector est envié de tous, l'architecture des compilateurs est bien meilleure (car ils peuvent compiler vers beaucoup d'architecture différentes, ce qui n'est pas le cas de Haskell, x86-minded), et les performances supérieures.

    Le gros avantage de Haskell est aujourd'hui sa communauté, anglo-saxone (mais combien sommes-nous de Français sur le Haskell-wiki, 10 ? 20 ?), très dynamique et surtout très sympathique.

    C'est un reproche très vif que je fais-là envers OCaml, dont la communauté est quasi-inexistante, ou alors constituée de deux ou trois normaliens ne regardant que la théorie et ne prêtant pas attention au noble Art de la programmation.*

    Voilà, si tu veux en savoir plus...
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  4. #4
    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 679
    Points
    18 679
    Par défaut
    Citation Envoyé par InOCamlWeTrust
    OCaml est beaucoup plus mature, et les performances supérieures.


    je ne suis pas totalement d'accord, il existe de nombreuses librairies et projets en haskell dont les performances sont proches (et même parfois supérieures) à ce qu'un code c++ tout à fait correct réussit à faire... et haskell est bien plus concis

    en caml, on obtient souvent des bonnes performances, en passant une partie des opérations en impératif, et en utilisant des structures de données modifiables sur place... même si le coeur du programme est fonctionnel, toutes les parties critiques pour les performances ne le sont pas toujours
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par InOCamlWeTrust
    Tout dépend de ce que tu veux faire.
    En fait, je veux concevoir et implementer un nouveau moteur d'inference, c'est pour ca qu'avant tout je dois etudier ce qui existe deja pour prendre une petite idée de depart.
    Encore merci de m'avoir parlé de haskell car je le connaissais pas avant.

  6. #6
    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 679
    Points
    18 679
    Par défaut
    Citation Envoyé par ThE_LaSt
    En fait, je veux concevoir et implementer un nouveau moteur d'inference, c'est pour ca qu'avant tout je dois etudier ce qui existe deja pour prendre une petite idée de depart.

    un moteur d'inférence... ben au choix ocaml ou haskell

    tu veux te recoder un prolog ? ou un système de types ?
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  7. #7
    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 InOCamlWeTrust
    [...]
    Si tu n'as pas d'obligation de travail avec Lisp ou Scheme, je te conseille de les oublier : leurs concepts sont assez lointains de ceux de Haskell et OCaml (entre autres, le typage).

    OCaml et Haskell sont les deux seuls langages qui aujourd'hui bénéficient d'un soutien suffisant pour programmer une application entière (de la tête aux pieds j'entends).[...]
    Pas du tout d'accord.
    D'abord le fait que les concepts de Scheme puissent être lointain de ocaml (par exemple, ceux sur quoi je ne suis pas complètement d'accord non plus) n'implique absolument pas le fait qu'il faille oublier Scheme.
    Ensuite, il existe bien des choses en Scheme qui permettent de dire qu'il a un soutien important et qu'il peut permettre de programmer une application complète. Les compilateurs sont devenus très performants d'ailleurs.
    Stalin par exemple est même devenu quasiment plus performant que ocaml sur certaines parties
    Static type information greatly facilitates optimization. The OCaml, C++ and Standard ML languages all expose static type information to the compiler, resulting in much faster programs. The Stalin Scheme compiler goes to great lengths to infer static type information, resulting in faster programs at the cost of vastly slower compile times.
    (ici on parle de ray tracer source)

    Finalement le langage de macro de Scheme est un plus qui n'existe pas dans ocaml ou Haskell (à ma connaissance en tout cas). La facilité et la puissance d'utilisation des macros sont incomparables à tout ce que je connais ailleurs.

    Bon je ne vais pas faire un exposé de 100 lignes, mais disons qu'il est simplement faux de dire que ocaml permet de faire des applications sérieuses et est meilleur que scheme. Il y a certes des différences, des points faibles à l'un et à l'autre, mais les deux sont fortement intéressants car leurs points forts méritent le détour.

    Connais tu vraiment Scheme mon cher IOCWT ?
    Sinon tu ne devrais pas être aussi expéditif à son égard.
    Ou alors, tu te ranges dans la même catégorie de ceux qui juge vite ocaml sans le connaître.

  8. #8
    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
    un moteur d'inférence... ben au choix ocaml ou haskell
    Ou Scheme -_-
    Le livre de Chazarin (Programmer avec Scheme) en a même une partie sur les systèmes experts et la programmation logique qui pourrait t'aider.

    Cependant si tu veux faire un système dans ce genre pourquoi ne pas simplement utiliser du Prolog ?

  9. #9
    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
    Cependant, il possède un avantage par rapport à OCaml : il est plus petit, et on peut raisonnablement espérer l'avoir appris en quelques mois, voire quelques semaines... ce qui n'est absolument pas le cas d'OCaml, si tu as envie de le maîtriser à fond !
    C'est marrant, j'ai exactement l'impression inverse !

    D'une part, j'ai l'impression que la transition <langage impératif> -> OCaml est assez "simple" : il "suffit" d'apprendre les bases de l'approche fonctionnelle et des langages typés (récursivité, structures non mutables privilégiées, types algébriques, composition de fonctions (s'habituer à manipuler map/fold/filter par exemple)...), et on maîtrise les concepts principaux de Caml (bon, il reste des aires de richesse à explorer, comme l'Objet, les modules, et d'autres trucs, mais on a vraiment saisi le principal à mon avis).
    Si on passait directement d'un langage impératif à Haskell, j'ai l'impression que la transition serait beaucoup plus violente : on se retrouve à devoir assimiler au moins tous les concepts que j'ai cité plus haut, avec en plus l'évaluation paresseuse, et le fonctionnel pur, donc les monades (bonjour le "Hello World" en Haskell...).

    Dans l'ensemble, je trouve les règles du Haskell plus complexes que celles du Caml. Il suffit de regarder par exemple les règles du filtrage de motif, il y a tout un tas de subtilités (la gestion de la paresse, de la divergence, etc...), de questions qui ne se posent pas en OCaml.

    Enfin, la différence de "taille" entre les langages est difficile à comparer. Si on se limite à Haskell 98 ce n'est pas si énorme en effet (bien que déjà conséquent je pense, par rapport à Caml Light), mais dès qu'on entre dans les extensions de GHC/Hugs, l'enfer commence. Types algébriques généralisés, Phantom types, toute la magie autour du système de typage (au moins les camliens essaient de conserver l'inférence de type, ce qui les limite un peu niveau expérimentations de typage complètement dingues),
    SYB, Arrows...
    Rien que comprendre et assimiler les types classes dans l'ensemble, et les monades en particulier, ça prend sûrement (à une personne un peu normale) plus que quelques semaines.

    En bref, je ressens plutôt une complexité plus forte du côté Haskell.

  10. #10
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    J'ai beaucoup appris de vous les gars ! Mais, svp, est ce que personne n'aurait un lien comparatif complet sur ces differents language ?

  11. #11
    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 bluestorm
    Si on passait directement d'un langage impératif à Haskell, j'ai l'impression que la transition serait beaucoup plus violente : on se retrouve à devoir assimiler au moins tous les concepts que j'ai cité plus haut, avec en plus l'évaluation paresseuse, et le fonctionnel pur, donc les monades (bonjour le "Hello World" en Haskell...).
    Code Haskell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    module Main where
     
    main = putStrLn "Hello world"
    C'est difficile ça ?

    On n'est pas obligé de tout comprendre d'un coup, utiliser la monade IO sans la comprendre n'est pas très difficile. D'ailleurs les monades ne sont pas si dures à comprendre, ce qui est difficile c'est de se mettre à "raisonner monade". Une bonne introduction aux monades ne demande vraiment pas d'être un master en Informatique Théorique.

    L'évaluation paresseuse est très intéressante mais elle n'empêche pas d'écrire les mêmes programmes qu'avec l'évaluation stricte, on peut se familiariser progressivement avec elle et étendre ses horizons.

    Bien sûr le contact avec le fonctionnel pur peut se révéler rude pour un vétéran de l'impératif, mais au moins avec Haskell il est forcé de s'y mettre vraiment, il ne peut pas écrire du petit-nègre de fonctionnel avec de gros bout d'impératif comme en OCaml (je ne dénigre pas OCaml : pour les connaisseurs du langage le multi-paradigme offre d'innombrables opportunités mais pour un débutant qui essaye d'apprendre le fonctionnel en venant de l'impératif, ça peut-être un inconvénient...).

    Dans l'ensemble, je trouve les règles du Haskell plus complexes que celles du Caml. Il suffit de regarder par exemple les règles du filtrage de motif, il y a tout un tas de subtilités (la gestion de la paresse, de la divergence, etc...), de questions qui ne se posent pas en OCaml.
    Bof...

    Enfin, la différence de "taille" entre les langages est difficile à comparer. Si on se limite à Haskell 98 ce n'est pas si énorme en effet (bien que déjà conséquent je pense, par rapport à Caml Light), mais dès qu'on entre dans les extensions de GHC/Hugs, l'enfer commence. Types algébriques généralisés, Phantom types, toute la magie autour du système de typage (au moins les camliens essaient de conserver l'inférence de type, ce qui les limite un peu niveau expérimentations de typage complètement dingues),
    SYB, Arrows...
    Ca par contre c'est incontestable, le nombre d'extension du système de type en Haskell est effarant ! Et un peu difficile à avaler en une fois... Mais on n'y est pas obligé non plus.

    Rien que comprendre et assimiler les types classes dans l'ensemble, et les monades en particulier, ça prend sûrement (à une personne un peu normale) plus que quelques semaines.
    C'est quoi une personne "un peu normale" ? Je n'ai pas l'impression que la mécanique des type class ou des monades soit si compliquée qu'il faille plus d'une petite semaine pour les comprendre. Après, apprendre à raisonner avec, à repérer les endroits où ces concepts vont énormément nous simplifier la vie ou même à comprendre certains des codes qui les utilisent, certes cela prendra bien plus de temps (et le "bien plus que quelques semaines" est sans doute optimiste si on se place dans cette optique).

    En bref Haskell98 ne me paraît pas si compliqué à apprendre, apprendre à l'utiliser à plein et comprendre ses diverses extensions est par contre beaucoup plus difficile et lent.

    --
    Jedaï

  12. #12
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par Garulfo
    Ou Scheme -_-
    Le livre de Chazarin (Programmer avec Scheme) en a même une partie sur les systèmes experts et la programmation logique qui pourrait t'aider.

    Cependant si tu veux faire un système dans ce genre pourquoi ne pas simplement utiliser du Prolog ?
    Est ce que vous avez ce livre en version numerique svp ? Si oui, vous pourriez me l'envoyer ? Merci

  13. #13
    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 679
    Points
    18 679
    Par défaut
    Citation Envoyé par Garulfo
    Ou Scheme -_-
    Le livre de Chazarin (Programmer avec Scheme) en a même une partie sur les systèmes experts et la programmation logique qui pourrait t'aider.

    perso, j'ai lu le Structure and Interpretation of Computer Programs de Adelson & Sussman, et j'ai à l'époque fait pas mal d'essais avec ce langage (des petits trucs certes, mais pas mal quand même... )

    je suis aujourd'hui convaincu de la supériorité d'Haskell et OCaml sur Scheme (mais ce n'est que mon opinion )


    par ailleurs, j'ai entendu beaucoup de biens sur les performances de la compilation par Stalin, et beaucoup de mal quand à sa lenteur... qui le rendrait inutilisable sur un projet un peu ambitieux

    Citation Envoyé par Garulfo
    Cependant si tu veux faire un système dans ce genre pourquoi ne pas simplement utiliser du Prolog ?

    faire un moteur d'inférence en prolog revient à l'utiliser normalement, ou à faire de la méta-programmation pour spécifier l'ordre d'évaluations des clauses dans son solveur perso

    j'ai déjà fait... c'est rapide, mais pas très instructif sur le fonctionnement d'un moteur d'inférence
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  14. #14
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Oui : c'est comme celui qui implante du lambda-calcul en OCaml...
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  15. #15
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Citation Envoyé par Garulfo
    D'abord le fait que les concepts de Scheme puissent être lointain de ocaml (par exemple, ceux sur quoi je ne suis pas complètement d'accord non plus) n'implique absolument pas le fait qu'il faille oublier Scheme.
    Ensuite, il existe bien des choses en Scheme qui permettent de dire qu'il a un soutien important et qu'il peut permettre de programmer une application complète. Les compilateurs sont devenus très performants d'ailleurs.
    Stalin par exemple est même devenu quasiment plus performant que ocaml sur certaines parties
    En France, j'ai rarement vu des gens programmer intensivement en Scheme... si j'avais dû donner un conseil à un anglo-saxon, j'aurais dit l'inverse.

    Citation Envoyé par Garulfo
    Bon je ne vais pas faire un exposé de 100 lignes, mais disons qu'il est simplement faux de dire que ocaml permet de faire des applications sérieuses et est meilleur que scheme.
    OCaml est plus adapté à faire une application entière car de par sa conception, il est tout-terrains : analyse de langages, preuves formelles, programmation mathématique, interfaces graphiques (même si ça reste encore un tout petit peu son talon d'Achile), etc... Scheme, par contre, n'est pas un 4x4... Je ne dénigre par Scheme, au contraire : je pense qu'il faut simplement utiliser les choses pour ce à quoi elles sont destinées.

    Citation Envoyé par Jedaï
    En bref Haskell98 ne me paraît pas si compliqué à apprendre, apprendre à l'utiliser à plein et comprendre ses diverses extensions est par contre beaucoup plus difficile et lent.
    C'est pourquoi je disais qu'il était petit par rapport à OCaml qui, lui, est un mastodonthe si on considère tout ce qu'il peut faire (même sans CamlP4, ça fait peur). Ensuite, c'est sûr, par rapport à GHC, les extensions font énormément grossir le langage... mais les extensions ne sont pas portables...

    ... et là le bât blesse grièvement, car avec OCaml tu fais des choses 100% portables (tous OS et tous processeurs, pratiquement), alors qu'avec Scheme ou Haskell, le nombre important d'implantations différentes fait qu'il est difficile d'écrire du code portable, et tu auras ainsi le vieux spectre de la portabilité, bien connu en C et C++, derrière ton dos ! Comme quoi, le C c'est le paradis à côté d'autres langages (mais si, mais si, croyez-moi !) !

    Citation Envoyé par gorgonite
    je ne suis pas totalement d'accord, il existe de nombreuses librairies et projets en haskell dont les performances sont proches (et même parfois supérieures) à ce qu'un code c++ tout à fait correct réussit à faire...
    Je crois que l'on trouve cette phrase dans le manuel de GHC :

    There are plenty of hand-optimized libraries written in C or C++. Do not try to compete with them : link with them instead.

    C'est également un reproche que j'ai à l'encontre de Haskell : ou commence-t-il et ou termine la programmation en C ? Sans parler (et ça c'est inacceptable... à moins que je ne l'ai pas vu, mais j'ai réellement cherché dans les librairies fournies avec GHC) du fait que Haskell ne peut pas communiquer sur Internet !
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  16. #16
    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 InOCamlWeTrust
    ... et là le bât blesse grièvement, car avec OCaml tu fais des choses 100% portables (tous OS et tous processeurs, pratiquement), alors qu'avec Scheme ou Haskell, le nombre important d'implantations différentes fait qu'il est difficile d'écrire du code portable, et tu auras ainsi le vieux spectre de la portabilité, bien connu en C et C++, derrière ton dos ! Comme quoi, le C c'est le paradis à côté d'autres langages (mais si, mais si, croyez-moi !) !
    Oui, enfin bon... Si tu veux faire une application complète en OCaml tu risques de te trouver confronté au problème de librairies graphiques et là... ce n'est pas plus portable que pour Haskell.
    Haskell lui-même a effectivement plusieurs implémentations mais tu peux te limiter à GHC si tu veux être à peu près tranquille, ce sera moins portable qu'OCaml mais pour toutes les plateformes classiques ça marchera très bien et tu auras accès à la plus grosse partie de l'effort de développement pour Haskell.
    En bref sauf si tu as l'intention de faire un truc très généraliste Haskell conviendra tout autant qu'OCaml du point de vue portabilité.

    Citation Envoyé par InOCamlWeTrust
    Je crois que l'on trouve cette phrase dans le manuel de GHC :

    There are plenty of hand-optimized libraries written in C or C++. Do not try to compete with them : link with them instead.

    C'est également un reproche que j'ai à l'encontre de Haskell : ou commence-t-il et ou termine la programmation en C ? Sans parler (et ça c'est inacceptable... à moins que je ne l'ai pas vu, mais j'ai réellement cherché dans les librairies fournies avec GHC) du fait que Haskell ne peut pas communiquer sur Internet !
    Euh... Network fait partie des bibliothèques distribuées en standard avec GHC et prend en charge toute la communication par socket de façon multiplateforme. Network.HTTP est une librairie pour gérer le protocole HTTP compatible avec au moins GHC et Hugs...

    Les librairies écrites en C pour Haskell sont toutes des librairies qui travaillent directement sur la mémoire ou les aspects bas-niveau qu'il faut bien faire en C (en Ocaml également les librairies de bas-niveau ont été écrites en C), la plus grande partie des librairies distribuées avec GHC est en Haskell et traite de problème bien plus haut niveau.

    Comprenons nous bien : je pense qu'OCaml est actuellement le langage le plus "mature" des propositions, néanmoins Haskell est un choix tout à fait viable et présente certains avantages qui permette d'écrire des programmes puissants, clairs et élégants en peu de lignes (le nombre de ligne n'est pas une mesure de qualité en soi, mais à mon humble avis, entre un code en C de 30 000 ligne et un code équivalent en Haskell de 1000 lignes, le code en Haskell est plus facile à maintenir et à aborder (pour quelqu'un qui connait bien les deux langages bien sûr !)...).

    Un exemple récent de véritable application en Haskell : xmonad.

    --
    Jedaï

  17. #17
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Je suis entièrement d'accord avec toi sur tous les points, là il n'y a pas de problèmes.

    Pour ce qui est de Network, je re-regarderai la version que j'ai à la maison (6.6 normalement)... c'est vrai que ne pas avoir trouvé de librairie permettant de communiquer sur internet m'avait choqué.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  18. #18
    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 InOCamlWeTrust
    En France, j'ai rarement vu des gens programmer intensivement en Scheme... si j'avais dû donner un conseil à un anglo-saxon, j'aurais dit l'inverse.[...]
    Pour toi le support, c'est uniquement en Français et avec des personnes de visu? Car dans ce cas tu as raison ^_^

  19. #19
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    Garuflo, tu ne m'a pas repondu si t'avais le livre de charazin en version numerique ou pas ?
    Sinon, je pense que pour mon moteur d'inference, je vais l'implementer en Scheme ou Ocaml. Vous en dites koi ?
    Moi je pencherai pour scheme

  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 ThE_LaSt
    Garuflo, tu ne m'a pas repondu si t'avais le livre de charazin en version numerique ou pas ?
    Sinon, je pense que pour mon moteur d'inference, je vais l'implementer en Scheme ou Ocaml. Vous en dites koi ?
    Moi je pencherai pour scheme
    Non il faut l'acheter.
    Moi je te dirais Scheme aussi, ayant plusieurs fois à faire avec ce genre de problème. Cependant, si tu ne t'imposes pas de prog. fonctionnelle, le Prolog serait un meilleur choix a priori puisque c'est exactement le but du langage que de programmer des systèmes de déductions.

Discussions similaires

  1. Comparaison de trois nombres en langage prolog
    Par pacopaco dans le forum Prolog
    Réponses: 1
    Dernier message: 27/09/2012, 08h36
  2. Exemple de systemes experts sous Ocaml, scheme et CLIPS
    Par ThE_LaSt dans le forum Langages fonctionnels
    Réponses: 14
    Dernier message: 16/11/2009, 17h01
  3. comparaison entre caml,lisp et scheme
    Par info_sara dans le forum Langages fonctionnels
    Réponses: 14
    Dernier message: 27/01/2009, 06h58
  4. Quel langage fonctionnel choisir ? Caml, Lisp ou Scheme ?
    Par funtix dans le forum Langages fonctionnels
    Réponses: 85
    Dernier message: 23/04/2007, 22h03
  5. prolog et scheme
    Par bourvil dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 30/09/2003, 13h09

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