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

Caml Discussion :

[Débutant][OCaml] Comment ça marche derrière l'interpréteur ?


Sujet :

Caml

  1. #1
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut [Débutant][OCaml] Comment ça marche derrière l'interpréteur ?
    Bonjour,

    je début le ocaml dans le cadre de cours CNAM.
    On a téléchargé un soft depuis le site de l'INIRIA et on obtient une interface graphique qui est une sorte d'invite de commande avec des # en guise de prompt.
    A partir de la on peut saisir des calculs, définir des fonctions etc ... n finissanr par des ;; et la commande est interprétée.

    Ce que j'aimerais savoir c'est comment ca marche derrière.
    Par exemple quand je tape

    let carre x = x ** 2. ;;

    un interpéteur prend directement ca en entrée ?
    il y a une compilation en bytecode puis interprétation ?
    Une compilation en natif + execution ?

    PLus généralement, est-il possible de faire un programme Ocaml indépendant de cette interface en ligne de commande ?
    SI oui comment ca marche et qu'est-ce que ca produit ?

    Désolé d'être si curieux et de d'y aller de si bon coeur avec mes question debutant mais je suis très intéressé par ce langage.

    Merci de votre aide

  2. #2
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    Le top level est une fonction d'évaluation de type "read-compile-eval-print". En clair, tu entres une ligne, et l'environnement effectue la lecture, puis la compilation en bytecode (comme pour Java), évalue l'expression et affiche un résultat.
    Il existe également un compilateur qui compile du code en natif (comme pour C par exemple).

    INIRIA
    C'est INRIA. D'ailleurs, sur le site, tu as une documentation complète sur le langage (http://caml.inria.fr). Jettes-y un oeil pour en savoir plus.

  3. #3
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Bonjour,

    merci pour la réponse.
    Donc ce soft fait bien de la comilation/interprétation.
    Dans son install, il n'y a pas ce qu'il faut pour compiler un fichier externe ( style JDK de Sun ( indépendament du compilateur natif dont tu parles) etq ui me permettrait de passer par un vrai éditeur.
    A tout hasard, le ocamlc ?


    Citation Envoyé par Patriarch24
    C'est INRIA.
    OUi je sais cela c'est une faute de frappe.

  4. #4
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    ocamlc est le compilateur de bytecode
    ocamlopt celui natif

    pour lancer un programme compilé en bytecode, utilise la commande ocamlrun.

    Le soft ne fait qu'appeler la commande ocaml, que tu peux utiliser en ligne de commande, et qui lance le top level.

    Pour un vrai éditeur, prends emacs avec le mode caml (tuareg par exemple, ou celui fourni avec la distrib).

  5. #5
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Citation Envoyé par Patriarch24
    ocamlc est le compilateur de bytecode
    ocamlopt celui natif

    pour lancer un programme compilé en bytecode, utilise la commande ocamlrun.

    Le soft ne fait qu'appeler la commande ocaml, que tu peux utiliser en ligne de commande, et qui lance le top level.

    Pour un vrai éditeur, prends emacs avec le mode caml (tuareg par exemple, ou celui fourni avec la distrib).

    Waouw

    Merci encore et encore, ben je me teste tout ca ce week end
    Encore une dernière petite question comme je suis un curieux de base, est-ce que vous connaissez le plug-in OCaml pour eclipse ?
    Je voudrais savoir s'il fonctionne correctement car au choix je préférerais eclipse a emacs.

  6. #6
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    Je ne le connais pas, mais pour ce que j'en ai entendu, il vaut mieux emacs. Mais je répète que je ne l'ai pas testé.

  7. #7
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Hum alors après un test express de chez express : je viens d'essayer avec un mini mini code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    let carre =  x *. 2.;;
    carre 2;;
    Donc en edit sous dos puis :

    ocaml test.ml -o test
    ocaml test
    Donc pas de message d'erreur, mais rien sur la sortie, est-ce que au fait qu'il manque une commande pour afficher le résultat ( style un printf alors que c'est automatiquement lorsque l'on passe par le top level ?

  8. #8
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    Oui il faut afficher le résultat à la mano. Le top level le fait tout seul (en réalité il affiche la valeur et le type du résultat).

    Utilise le module Printf (ça marche comme en C ). Voir la doc associée.

    Petite remarque en passant : ta fonction carre (x *. 2.) n'est pas la fonction carre (x * x). Et l'appel "carre 2" devrait te mettre une erreur de type (2 n'est pas un flottant).

  9. #9
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Hum non ca me met pas de message d'erreur mais pas parceque tu as tord, parceque j'ai encore fait une malencontreuse faute de frappe.
    Dans mon fichier c'est :

    Dans le top level, j'ai réussi a utiliser un printf via fichier, ouvrir, printf.
    Quand j'ai fait cela, il m'a mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #use " c/..../printf/ml"
    quand je fais pareil dans mon test.ml
    il m'indique une erreur sur #.

    J'ai essayé de mettre use dans # il reconnait pas use :'(

  10. #10
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    # use
    ne fait pas partie du langage OCaml, il sert juste à inclure dans le top level les librairies qui vont bien.

    http://caml.inria.fr/pub/docs/manual...manual022.html

  11. #11
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Citation Envoyé par Patriarch24
    # use
    ne fait pas partie du langage OCaml, il sert juste à inclure dans le top level les librairies qui vont bien.

    http://caml.inria.fr/pub/docs/manual...manual022.html

    Ok merci j'ai donc transformé en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    let carre x = x *. 2. ;;
    print_string(string_of_float (carre 2.));;
    Et j'ai enfin fait mon premier hello world a la ocaml
    Allez j'y retourne car avant de me taper a dos de chameau tout le désert qui me sépare de la connaissance d'ocaml, il faut déjà que je retourn sur le système R/3 qui me SAP le moral

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant]Finally, comment ça marche ?
    Par PaulHuxe dans le forum C#
    Réponses: 7
    Dernier message: 26/05/2011, 15h11
  2. débutant - appli java et bdd comment ça marche
    Par 123quatre dans le forum Général Java
    Réponses: 6
    Dernier message: 25/09/2008, 21h24
  3. [Débutant][JTable] Comment ça marche?
    Par Nasky dans le forum Composants
    Réponses: 7
    Dernier message: 02/08/2005, 15h04
  4. [Débutant][JList] Comment ça marche dans mon cas ?
    Par gcore dans le forum Composants
    Réponses: 31
    Dernier message: 28/06/2004, 10h45
  5. [update][req. imbriquee] Comment ca marche ??
    Par terziann dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/07/2003, 12h51

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