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 :

Quel langage fonctionnel choisir ? Caml, Lisp ou Scheme ?


Sujet :

Langages fonctionnels

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 67
    Points : 36
    Points
    36
    Par défaut Quel langage fonctionnel choisir ? Caml, Lisp ou Scheme ?
    'soir.

    Je voudrais apprendre un langage fonctionnel, mais je sais pas quoi choisir entre OCaml et Lisp ou Scheme...
    Je voudrais m'orienter vers celui qui pourra réellement me servir pour mes développements persos et prototypages. Donc il est important que le langage soit répandu (libs, bindings), qu'il ait une communauté active (forum), qu'il y ait des livres et des outils (IDE en particulier) etc...

    Sur tous ces points j'ai l'impression que l'on trouve davantage de choses pour Lisp/Scheme.

    A plusieurs reprises, j'ai commencé à regarder OCaml mais, étant sous Windows, je me suis heurté à des difficultés qui font qu'à chaque fois j'ai abandonné. Cette fois-ci, j'espère bien aller jusqu'au bout.
    L'environnement DrScheme m'a l'air plus simple.

    J'ai tenté de peser le pour et le contre pour chaque langage, résultat : match nul.
    • OCaml a un puissant compilo, qui permet de faire des exécutables rapides et de petite taille (meme au runtime). Je crois avoir lu qu'avec Lisp, les exe atteignent minimum 16Mo. Est-ce qu'il existe des compilos Lisp ou Scheme permettant de créer des applis qui tournent aussi vite que celles créées avec OCaml ? Si oui lesquels, si non à vu d'oeil combien de % plus lentes ?
    • Le typage statique par inférence d'ocaml est intéressant pour coder bien du premier coup, mais contraignant également...
    • La syntaxe de Scheme est vraiment simple et les constructions sont homogènes du peu que j'ai vu.
    • Les macros intrinsèques à Lisp/Scheme ont l'air vraiment plus simples que celle en camlp4.
    J'attends vos avis/témoignages argumentés...

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 67
    Points : 36
    Points
    36
    Par défaut
    Merci pour tes liens...
    Le 2eme lien montre que l'on peut à priori tout faire avec CAML. Pour preuve MLDonkey. C'est en decouvrant MLDonkey que j'ai commencé a regarder CAML. Par contre quand est il de scheme/lisp ?

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    La syntaxe de Scheme est vraiment simple et les constructions sont homogènes du peu que j'ai vu.
    La syntaxe est peut être simple, mais personnellement, je trouve beaucoup plus simple à lire un code en OcamL (ce qui est également important pour la maintenance du programme).

    J'ai appris les deux langages (un premier jet de camL en prépa, puis un jet de Lisp en école et je suis retourné vers camL/OcamL par moi même ensuite), et je prefère nettement plus OcamL que je trouve moins contraignant.
    Je ne répondrai à aucune question technique en privé

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 67
    Points : 36
    Points
    36
    Par défaut
    C'est clair qu'avec scheme il faut faire gaffe a bien indenter et faire de fonction de moins de 10 lignes, sinon apres avec l'imbrication de parenthese (et malgé des editeurs qui mettent en correspondance les parentheses) ca doit vite donner mal au crane.
    Mais faut voir le bon coter! On est pousser a ecrire de petites fonctions, pleins de petites fonctions.

    Sinon, vu que tu connais les 2, est ce que il y a autant de possibilité dans l'un comme dans l'autres ?

    J'ai créé un programme de derivation de fonction (en me basant sur des exemples trouvés), une version caml et une version scheme. L'approche est differente en caml du fait du typage, mais dans les 2 cas, j'ai trouvé ca interessant.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 67
    Points : 36
    Points
    36
    Par défaut
    Sur ce thread [CAML] Dans quel(s) domaine(s) le langage caml est utile ?, il est dit que caml est un language general que l'on peut tout faire avec. Qu'en est il pour Scheme ?

  7. #7
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par funtix
    Sinon, vu que tu connais les 2, est ce que il y a autant de possibilité dans l'un comme dans l'autres ?

    Un langage fonctionnel (LISP, scheme et OcamL) est équivalent à une machine de Turing, donc on est capable de tout faire avec

    Après, ça dépend du nombre de module existant dans chacun des langages. Il faudrait se renseigner sur ce point, mais je ne sais pas trop. Je pense que dans les deux langages, il doit y avoir des modules à peu près dans tous les domaines.

    En camL, si tu fais du purement fonctionnel, tu te retrouves également à réaliser de petite fonction, mais la notation est souvent beaucoup plus clair (par exemple avec les notations de la forme : a::L pour les listes...). Parce que en LISP (je ne connais pas Scheme, mais apparement, ça doit être ressemblant), les listes sont certes plus puissantes (on peut directement créer des arbres binaires), mais je ne supporte pas la syntaxe Et je trouve mieux de bien séparer les fonctionnalités des objets comme en camL.


    Par exemple, je trouve que la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    let rec getVoisins g sommet = 
      match g with
      [] -> failwith "Accès à un sommet non existant"
     |(s, voisins)::reste -> if s = sommet then 
                                 voisins
      			 else
    			     getVoisins reste sommet;;
    Devient imbuvable en LISP
    Je ne répondrai à aucune question technique en privé

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 67
    Points : 36
    Points
    36
    Par défaut
    En faisant des recherches sur ocaml, je viends de decouvrir Nemerl.
    Nemerle is a high-level statically-typed programming language for the .NET platform. It offers functional, object-oriented and imperative features. It has a simple C#-like syntax and a powerful meta-programming system.
    Manifestement ce language a pris sa source d'inspiration dans ocaml.

    Quelqu'un a t'il essayé?

    J'avoue que la syntaxe m'est plus familère, mais est elle aussi puissante que ocaml?

  9. #9
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut
    Citation Envoyé par millie
    Un langage fonctionnel (LISP, scheme et OcamL) est équivalent à une machine de Turing, donc on est capable de tout faire avec

    Pas tout à fait d'accord, c'est le lambda-calcul qui est turing-complet. Caml, qui derive du lambda-calcul typé n'est plus turing-complet. Au passage, pour être turing comlet, il ne faut pas avoir de mémoire borné, ce qui est le cas dans tous les langages de programmation, rien qu'avec le representation binaire des entiers sur un nombre fini de bits... Mais bon, je sais que je chipote et que ta remarque était plus la pour montrer qu'un langage fonctionnel était puissant.

  10. #10
    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 benratti
    Pas tout à fait d'accord, c'est le lambda-calcul qui est turing-complet. Caml, qui derive du lambda-calcul typé n'est plus turing-complet. Au passage, pour être turing comlet, il ne faut pas avoir de mémoire borné, ce qui est le cas dans tous les langages de programmation, rien qu'avec le representation binaire des entiers sur un nombre fini de bits... Mais bon, je sais que je chipote et que ta remarque était plus la pour montrer qu'un langage fonctionnel était puissant.

    pas tout à fait d'accord non plus...
    mémoire bornée ne signifie pas que chaque variable doit pouvoir prendre une quantitée infinie de mémoire, mais que le programme est censé pouvoir utiliser une quantité infinie de mémoire... et la borne de 4Go par process ne vient pas du langage

    de plus, de quel lambda-calcul typé parles-tu ?
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  11. #11
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut
    Citation Envoyé par gorgonite
    de plus, de quel lambda-calcul typé parles-tu ?
    celui la par exemple

  12. #12
    Membre émérite

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Points : 2 844
    Points
    2 844
    Par défaut
    Citation Envoyé par millie
    La syntaxe est peut être simple, mais personnellement, je trouve beaucoup plus simple à lire un code en OcamL (ce qui est également important pour la maintenance du programme).

    J'ai appris les deux langages (un premier jet de camL en prépa, puis un jet de Lisp en école et je suis retourné vers camL/OcamL par moi même ensuite), et je prefère nettement plus OcamL que je trouve moins contraignant.
    Je suis un fan de Scheme mais je suis vraiment d'accord. La lisibilité et le coté terse des ML est vraiment une force.
    La syntaxe n'est pas bien compliqué non plus en Caml, il ne faut pas exagérer.

  13. #13
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par Gnux
    La syntaxe n'est pas bien compliqué non plus en Caml, il ne faut pas exagérer.
    Aaah, j'ai pas dit ça.

    Je parlais de la syntaxe simple au sens : grammaire simple, analyse syntaxique simple.

    Je disais que la syntaxe est Lisp (scheme) est simple mais que je trouve dur à lire.
    Je ne répondrai à aucune question technique en privé

  14. #14
    Membre habitué
    Inscrit en
    Février 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 310
    Points : 132
    Points
    132
    Par défaut
    je te conseillerai d'utiliser scheme car c'est un language avec lequel tu peut a peut près tout faire, de plus c'est undescendant de lisp.

    moi ca fait deux ans que je fait du scheme et je ne suis pas deçu

  15. #15
    Membre émérite

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Points : 2 844
    Points
    2 844
    Par défaut
    Citation Envoyé par kespy13
    je te conseillerai d'utiliser scheme car c'est un language avec lequel tu peut a peut près tout faire, de plus c'est undescendant de lisp.

    moi ca fait deux ans que je fait du scheme et je ne suis pas deçu
    Scheme est très bien pour apprendre mais ensuite je ne lui vois pas trop d'applications.
    Avec les ML j'en vois un peu plus.
    Pourrais tu nous dire ce que tu codes en Scheme? J'avoue que j'aimerais bien connaître les usages "industriels et universitaires" de Scheme/Lisp au délà de Emacs ()

  16. #16
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Au LaBri (lab bordelais de recherches en informatiques), ils utilisent pas mal le langage Lisp. Ce lab travaille souvent "en collaboration" avec l'Enseirb (école d'informatique à bordeaux) et propose souvent des sujets de projets (sur 4 ou 6 mois) qui ont un lien direct avec ce qu'ils font.

    Certains sont en Lisp justement (surtout ceux qui concerne les graphes), notamment ceux-ci (donc, en lisant vaguement, tu peux voir en quoi ils utilisent ça) :

    http://www.enseirb.fr/~pelegrin/ense...projet_01.html

    http://www.enseirb.fr/~pelegrin/ense...projet_03.html

    Il est possible que les liens meurent dans le mois ou l'année.

    Pour la petite histoire, personne n'a pris ces sujets là cette année on se demande bien pourquoi.

    Personnellement, j'ai l'impression (ce n'est qu'une impression) qu'ils utilisent ce langage car ils sont plus spécialisés et ont beaucoup plus l'habitude de celui ci que ocaml.
    Je ne répondrai à aucune question technique en privé

  17. #17
    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 benratti

    ben c'est une extension du lambda-calcul... pas le lambda-calcul

    mais là, on va troller...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  18. #18
    Membre émérite

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Points : 2 844
    Points
    2 844
    Par défaut
    Utilisation pro des langages fonctionnels. J'ai trouvé une adresse: http://www.galois.com/cufp/
    CUFP ou Commercial Use For Functionnal Programming

  19. #19
    Membre actif
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 178
    Points : 201
    Points
    201
    Par défaut
    Citation Envoyé par benratti
    Pas tout à fait d'accord, c'est le lambda-calcul qui est turing-complet. Caml, qui derive du lambda-calcul typé n'est plus turing-complet.
    Ouhla

    Le lambda-calcul est turing complet
    Le lambda-calcul simplement typé n'est pas turing complet
    Caml est bien sur turing complet.

    Pour vous en convaincre c'est facile essayer de coder une machine de turing, y'en a pour 10minutes (je l'ai même eu en exo d'examen).

  20. #20
    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
    Moi je ne dirai qu'une seule chose dans ce message :

    Objective Caml ou Haskell

    Tout le reste, c'est du ... mis à part peut-être SML, et encore...

    Objective Caml et Haskell sont les deux seuls langages fonctionnels permettant de développer de vrais programmes et applications aujourd'hui, c'est-à-dire possédant des outils modernes et adaptés. D'ailleurs, ce n'est pas pour rien que F#, en cours de développement pour la plateforme .NET, pompe tout sur Objective Caml et que Microsoft finance de manière généreuse des projets comme GHC (le principal compilateur Haskell).

    Un début de tutoriel pour Objective Caml se trouve ici :

    http://gorgonite.developpez.com/tuto.../presentation/

    Quelques indications concernant les bibliothèques disponibles avec la distribution y sont présentes.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

Discussions similaires

  1. comparaison entre caml,lisp et scheme
    Par info_sara dans le forum Langages fonctionnels
    Réponses: 14
    Dernier message: 27/01/2009, 05h58
  2. Quel langage fonctionnel choisir ?
    Par Wachter dans le forum Langages fonctionnels
    Réponses: 1
    Dernier message: 04/11/2008, 05h10
  3. Quel langage/outil choisir pour export feuille Excel ?
    Par JLDEB dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/10/2006, 23h33
  4. Quel langage performant choisir ? Perl ?
    Par tartampion dans le forum Langages de programmation
    Réponses: 10
    Dernier message: 20/05/2006, 11h26
  5. Quel langage portable choisir pour PC et Mac ?
    Par phaeton dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 20/04/2006, 20h55

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