Journal caml : votre expérience m intéresse

Posté par (page perso) .
Tags : aucun
0
13
fév.
2004
Vous pensez quoi du http://caml.inria.fr/(...) ?

Voila un de mes amis passe une classe préparatoire. Il m a demandé un coup de main au niveau algorythmique en caml.

Est ce un langage vraiment intéressant, utile ?

J en suis a la compréhension de synthèse de type et aux définitions parallèles par exemple

# let a = 1 in
let a = 2 and b = a in
a + b ;;
- : int = 3

Et franchement cela change pas mal du C et du C++, on arrete pas de tout "cast"é. Et les opérateurs pour les entiers ne sont pas les même que pour les flottants ....

Bref votre avis.

Dans mon apprentissage je m appui sur ces documents :
Abstraction Concrète : Manuel
http://perso.wanadoo.fr/jacques.rouable/ac/_manuel/man/ac.htm(...)
http://www.gomor.org/Programmation/caml.html(...)
http://pauillac.inria.fr/caml/man-caml/index.html(...)
  • # Re: caml : votre expérience m intéresse

    Posté par (page perso) . Évalué à 1.

    En objective caml (donc pas du caml) il y a mldonkey : client edonkey, soulseek, kazaa etc... multiplateforme avec interface web entre autre.
  • # Re: caml : votre expérience m intéresse

    Posté par (page perso) . Évalué à 1.

    pour faire de choses algorithmiquement compliquées, caml est super. Mais pour faire des choses simples, on se tape la tête contre des murs jusqu'au jour ou on se dit : "mais pourquoi faire simple alors que je peux faire super compliqué ?"

    Sérieux, c'est un bon langage, mais pas mon préferré.


    Bon à savoir : tu peux commander gratuitement toutes les docs de l'inria sur le sujet (et autres ... ) juste en leur envoyant un mail undiquant la référence que tu peux trouver sur leur site.
    http://kolvir.no-ip.org/projet_caml_2003_2004.tgz(...) (si je n'ai pas éteinds mon PC (je vis dans 9m² et la nuit en général j'aime bien dormir ...)
  • # Re: caml : votre expérience m intéresse

    Posté par . Évalué à 1.

    CAML est un excellent language pour faire deux choses :

    1- De l'analyse semantique par recherche de motifs. A condition de pas etre presse pour le resultat ca tourne bien. Le systeme de fonction est un peu bizarre au debut mais le fait de pouvoir differencier les differents cas par leur aspect et non pas par parsage a coup de if/then/else rend le code tres comprehensible pour une relecture ulterieure. De meme les algo reccursifs de type divide and conquer se codent en 10 secondes.



    2- Tester une grammaire/un parseur/un language. La c'est un peu lus complexe, mais vu que lex et Yacc peuvent etre clairement gavant quand tu veux juste verifier la coherence de ta gramaire, c'est assez pratique.


    Maintenant pour les programmes qui sont "critiques" en terme de temps d'execution, c'est sympa de tester son algo en Caml mais la version definitive devra etre ecrite dans un autre langage.

    Kha
    • [^] # Re: caml : votre expérience m intéresse

      Posté par . Évalué à 1.

      Maintenant pour les programmes qui sont "critiques" en terme de temps d'execution, c'est sympa de tester son algo en Caml mais la version definitive devra etre ecrite dans un autre langage.

      Je ne suis pas d'accord avec toi, même pour des programmes critiques Ocaml est très bon, son implémenation (ocamlopt par exemple) n'est pas si loin que ca niveau performance que gcc.

      Si ce langage est utilisé par des chercheurs dans les domaines de l'optimisation ce n'est pas simplement par ce que "c'est beau de programmer en fonctionnel". C'est que c'est aussi redoutable d'efficacité.

      Les programmes que j'appellerais critique pour "caml" ou Ocaml sont justement les programmes qui n'ont pas besoin d'algo poussé et ou la programmation impérative est bien plus simple.

      Bon en gros manipuler des tableau en caml bof, manipuler des listes ... la c'est autre chose en général.
  • # Re: caml : votre expérience m intéresse

    Posté par . Évalué à 1.

    Est ce un langage vraiment intéressant, utile ?

    Il l'est pour l'algo.
    C'est un langage fortement typé (ce qui oblige a un peu de rigueur, on additionne pas entiers et flottants par exemple ...),
    Il est très pratique pour parcourir des arbres grace à des fonctions récursives, et des pattern matching
    Il permet des abstractions pas possible en C.
    ...
    Enfin ce langage permet de ce concentrer sur les choses que l'on veut faire quand on fait de l'algorythmique c'est à dire l'algorythme et non sur le code (et la gestion de mémoire dont on a pas trop envie de s'occuper, Ocaml le fait assez bien lui même)

    Par contre je coderais pas un drivers pour un périphérique en Ocaml.

    Enfin bref, comparé Ocaml et le C par exemple me parait assez bête, c'est comme comparé des choux et des carottes. En effet le C est une sorte d'assembleur plus haut niveau, qui te laisse te démerdé par toi même sur pas mal de trucs (tu dois verifier la taille de tes buffers par exemple si tu veux pas faire trop de bétises, enfin bon la gestion de la mémoire elle est pour toi ...), ce qui permet de faire des applications assez rapide en général.
    Le but d'Ocaml n'est pas de faire joujou avec la mémoire (qui reste un principe de la programation impérative à mon avis), par contre il est très interressant pour décrire des algo et reste très performants (à mon avis il est moins couteux en rapport temps/performance de developper certains algo en caml qu'en C) ...

    Enfin voila, donc caml comme tu l'auras compris j'aime bien, m'enfin tu fais pas tout avec non plus.

    PS: L'abus de Caml est dangereux pour la santé.
    (Ne pas abusé de la récursivité)
  • # Re: caml : votre expérience m intéresse

    Posté par (page perso) . Évalué à 1.

    J y connais encore rien parceque j ai commencé OCamL à la fac mardi dernier.
    Mais ca a l air bein cool, et ca me change de mon code sale en C ou Perl, car le "code sale" en CamL, plutot que de tourner mal ou presque ne compile pas.
  • # Re: caml : votre expérience m intéresse

    Posté par (page perso) . Évalué à 2.

    j'ai appris à caml à la fac de sciences de nantes....

    alors voici une bonne url pour débuter :

    le polycopié de cours en ligne est ici :
    http://www.sciences.univ-nantes.fr/info/enseignement/deug/info2/pol(...)

    le poly en postscript ici :
    http://www.sciences.univ-nantes.fr/info/enseignement/deug/info2/pol(...)

    le poly en pdf ici :
    http://www.sciences.univ-nantes.fr/info/enseignement/deug/info2/pol(...)

    le poly est pas mal, il introduit la programmation fonctionnelle, c'est pour un cours de DEUG et pour caml-light, mais une fois que tu auras compris tu peux rapidement de lancer dans objective-caml sutout que la doc de OCaml de l'inria est bien faite et tu feras vite le // entre les deux...

    voila voila

    M.
  • # Re: caml : votre expérience m intéresse

    Posté par (page perso) . Évalué à 1.

    Je ne saurais pas dire s'il est mieux de passer un peu de temps avec Caml avant de s'attaquer à Objective Caml mais une chose est sûre : dès que tu sauras si tu as envie d'aller au-delà des bases, il faut tirer un trait sur Caml et passer à la version objet.

    Déjà le développement de camllight, l'interpréteur, est arrêté depuis décembre 1997. Je viens de découvrir qu'il est sorti en janvier 2002 une version qui n'a même pas été annoncée dans les news ( http://caml.inria.fr/index-fra.html(...) ) qui n'est probablement qu'une version de maintenance.

    Je ne retrouve plus la page sur le site de l'Inria qui recommance à tous de passer à Ocaml. Il ne faut pas avoir peur du changement car il reste possible de se passer des notions objet en OCaml, juste quelques types de données à adapter (notation pointée, méthodes d'accès, ...).

    Le développement d'OCaml est au contraire (relativement) actif. Il est bien plus rapide en interprété et il possède un mode compilé digne des performances du couple C/gcc.

    Enfin, "Développement d'applications avec Objective Caml" (décrit ici : http://linuxfr.org/2001/03/05/2585.html(...)) est un très bon bouquin publié chez O'Reilly qui a le très bon goût d'être accessible en ligne (
    http://www.pps.jussieu.fr/Livres/ora/DA-OCAML/index.html(...) ). Même la couverture est jolie.
  • # Re: caml : votre expérience m intéresse

    Posté par . Évalué à 1.

    Si tu veux des exemples de ce qu'on peut faire rapidement en Caml, jette un coup d'oeil aux TP qu'on faisait en prépa sur http://cristal.inria.fr/~simonet/teaching/index.fr.html(...) ils sont super interressants et preparent pas mal au concours en plus.
  • # Re: caml : votre expérience m intéresse

    Posté par . Évalué à 1.

    Caml est de loin mon langage préféré....
    Pas pour programmer de grosses applications mais pour faire des algorythmes compliqués...
    Il est suepr enrichissant intellectuellement ! quelle joie de réaliser un algo de fou en juste 4 ou cinq lignes super puissantes !

    Bref je l aime.....
    • [^] # Re: caml : votre expérience m intéresse

      Posté par . Évalué à 1.

      [mode=private_joke]
      Boarf! Prolog (Eclipse) roxor!!! OCaml puxor!

      Caml = Mimi // Prolog = Monnier
      donc y'a pas photo!
      [/mode]

      Mais au fond, c'est vrai qu'on s'est bien marré à faire ce put#¤% d'analyseur syntaxique/sémantique en OCaml... Même si j'avais préféré le manipulateur de partitions musicales en Lambda-Prolog, ou le traducteur Hiéroglyphes/Anglais en SicStuS-Prolog ;)

      "Il faut" (Ezekiel 18:4) "forniquer" (Corinthiens 6:9, 10) "avec des chiens" (Thessaloniciens 1:6-9) "morts" (Timothée 3:1-10).

      • [^] # Re: caml : votre expérience m intéresse

        Posté par . Évalué à 2.

        > Caml = Mimi // Prolog = Monnier
        > donc y'a pas photo!

        Tu as de la chance, elle ne lit pas les journaux.
        • [^] # Re: caml : votre expérience m intéresse

          Posté par . Évalué à 1.

          Boarf, entre Mimi et moi, c'est une grande histoire d'amour... Et pis m'en fiche, j'ai mon diplôme, je risque (presque) plus rien!

          "Il faut" (Ezekiel 18:4) "forniquer" (Corinthiens 6:9, 10) "avec des chiens" (Thessaloniciens 1:6-9) "morts" (Timothée 3:1-10).

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.