Publicité
+ Répondre à la discussion
Page 1 sur 5 12345 DernièreDernière
Affichage des résultats 1 à 20 sur 86
  1. #1
    Futur Membre du Club
    Inscrit en
    septembre 2006
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 67
    Points : 15
    Points
    15

    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
    Expert Confirmé
    Avatar de Eusebius
    Inscrit en
    avril 2003
    Messages
    3 303
    Détails du profil
    Informations forums :
    Inscription : avril 2003
    Messages : 3 303
    Points : 3 469
    Points
    3 469

  3. #3
    Futur Membre du Club
    Inscrit en
    septembre 2006
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 67
    Points : 15
    Points
    15

    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/Modérateur

    Avatar de millie
    Profil pro
    Inscrit en
    juin 2006
    Messages
    6 942
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : juin 2006
    Messages : 6 942
    Points : 8 767
    Points
    8 767

    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
    Futur Membre du Club
    Inscrit en
    septembre 2006
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 67
    Points : 15
    Points
    15

    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
    Futur Membre du Club
    Inscrit en
    septembre 2006
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 67
    Points : 15
    Points
    15

    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/Modérateur

    Avatar de millie
    Profil pro
    Inscrit en
    juin 2006
    Messages
    6 942
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : juin 2006
    Messages : 6 942
    Points : 8 767
    Points
    8 767

    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 :
    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
    Futur Membre du Club
    Inscrit en
    septembre 2006
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 67
    Points : 15
    Points
    15

    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 éprouvé Avatar de benratti
    Profil pro
    Inscrit en
    mai 2004
    Messages
    429
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : mai 2004
    Messages : 429
    Points : 474
    Points
    474

    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 Nicolas Vallée
    Ingénieur d'études
    Inscrit en
    décembre 2005
    Messages
    10 206
    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 206
    Points : 16 754
    Points
    16 754

    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 éprouvé Avatar de benratti
    Profil pro
    Inscrit en
    mai 2004
    Messages
    429
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : mai 2004
    Messages : 429
    Points : 474
    Points
    474

    Par défaut

    Citation Envoyé par gorgonite
    de plus, de quel lambda-calcul typé parles-tu ?
    celui la par exemple

  12. #12
    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 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/Modérateur

    Avatar de millie
    Profil pro
    Inscrit en
    juin 2006
    Messages
    6 942
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : juin 2006
    Messages : 6 942
    Points : 8 767
    Points
    8 767

    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 régulier
    Inscrit en
    février 2006
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : février 2006
    Messages : 304
    Points : 95
    Points
    95

    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 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 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/Modérateur

    Avatar de millie
    Profil pro
    Inscrit en
    juin 2006
    Messages
    6 942
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : juin 2006
    Messages : 6 942
    Points : 8 767
    Points
    8 767

    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 Nicolas Vallée
    Ingénieur d'études
    Inscrit en
    décembre 2005
    Messages
    10 206
    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 206
    Points : 16 754
    Points
    16 754

    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 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

    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
    Inscrit en
    mars 2006
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : mars 2006
    Messages : 176
    Points : 177
    Points
    177

    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 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

    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.

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
  •