Le langage ocaml

Discutez d'informatique ici !
VPE
Membre Naturel
Messages: 54
Enregistré le: 11 Mai 2007, 11:34

par VPE » 01 Juin 2007, 13:22

Salut,
Aprés 2 minutes de recherche sur google :
L'exe =>
http://birdy.icare.chez-alice.fr/bidules/prgrm/ocaml/ocaml-2_04-win.zip
Et la doc =>
http://birdy.icare.chez-alice.fr/bidules/prgrm/ocaml/ocaml-2_04-refman.zip
PS : le langage s'appelle le caml, ocaml est le nom de l'IDE Objetive Calm



cauchy54
Membre Naturel
Messages: 27
Enregistré le: 14 Avr 2007, 14:42

par cauchy54 » 13 Juin 2007, 12:17

fin nul caml

Patastronch
Membre Irrationnel
Messages: 1345
Enregistré le: 23 Aoû 2005, 00:53

par Patastronch » 13 Juin 2007, 14:10

cauchy54 a écrit:fin nul caml


Je comprends pas trop ta phrase, mais si tu insinues que caml est un langage de merde je te conseille de te mettre a l'informatique pour améliorer la pertinence de tes jugements. Sinon (et meme le cas échéant) met toi a la grammaire.

abcd22
Membre Complexe
Messages: 2426
Enregistré le: 13 Jan 2006, 15:36

par abcd22 » 13 Juin 2007, 20:44


Moi ce que je vois sur le lien c'est une sorte de jeu pour se moquer justement des classements de langages de programmation :
« Create your own Ranking

What fun! Can you manipulate the multipliers and weights to make your favourite language the best programming language in the Benchmarks Game? »
Et sur la page d'accueil :
« Benchmarking programming languages?

How can we benchmark a programming language?
We can't - we benchmark programming language implementations.

How can we benchmark language implementations?
We can't - we measure particular programs. »
C'est marrant, ça fait un moment que je m'etais dit en voyant des lycéens/taupins passer des heures à comparer les mérites de telle ou telle prépa/école que ça serait sympa de faire un truc de ce genre mais pour créer des classements de prépas/grandes écoles, je découvre qu'il y a des gens qui ont eu la même idée.

Dominique Lefebvre
Membre Légendaire
Messages: 8007
Enregistré le: 03 Déc 2005, 13:00

par Dominique Lefebvre » 13 Juin 2007, 21:06

Patastronch a écrit:Oups la grosse gaffe, je voualis dire totalement l'inverse, le C est plus performant que le caml, en fait je voulais dire que dans la serie de test c est le seul langage qui batte réellement le caml en perf.

source :
[url="http://shootout.alioth.debian.org/gp4/index.php"]http://shootout.alioth.debian.org/gp4/index.php[/url]


:ptdr: :ptdr: dommage, j'ai raté une occasion de me passer du C! Vraiment dommage...

Plus sérieusement, ça ressemble à quoi le caml? Un chameau évadé du zoo des langages objets?

Patastronch
Membre Irrationnel
Messages: 1345
Enregistré le: 23 Aoû 2005, 00:53

par Patastronch » 13 Juin 2007, 21:33

Dominique Lefebvre a écrit::ptdr: :ptdr: dommage, j'ai raté une occasion de me passer du C! Vraiment dommage...

Plus sérieusement, ça ressemble à quoi le caml? Un chameau évadé du zoo des langages objets?



T es pas si loin que ca :p leur logo c est le dromadaire et y a meme un caml sans objet appelé caml light :p

Sinon si tu te passes de la syntaxe fonctionnelle ca ressemble a n'importe quel langage, si tu adoptes cette syntaxe ML tu fais tes fonctions comme tu déclarerais une fonction en maths en gros.

Enfin bon la j ai pas trop le temps de m'etendre sur le sujet mais je viendrait te montrer des exemples de codes si tu veux plus tard dans la soirée.

VPE
Membre Naturel
Messages: 54
Enregistré le: 11 Mai 2007, 11:34

par VPE » 13 Juin 2007, 23:40

Dominique Lefebvre a écrit:Plus sérieusement, ça ressemble à quoi le caml? Un chameau évadé du zoo des langages objets?


print_endline "Hello world!";;

# let d = d (sqrt epsilon_float);;
val d : (float -> float) -> float -> float =

#open "graphics";;
open_graph "";;
begin
set_color red;
fill_circle 320 200 50;
wait_next_event [Button_down]
end;;


La syntaxe a l'air encore plus barbante que celle du C++ :doh: .
J'oublie un point virgule sur deux,alors deux points virgules par fin d'instruction c'est terminé lol.
J'espert que le compilateur d'OCALM est plus précit que celui de Visual C++.

En revanche il semble y avoir des instructions trés interessantes comme :
wait_next_event [Button_down]

Dominique Lefebvre
Membre Légendaire
Messages: 8007
Enregistré le: 03 Déc 2005, 13:00

par Dominique Lefebvre » 14 Juin 2007, 08:57

VPE a écrit:print_endline "Hello world!";;

# let d = d (sqrt epsilon_float);;
val d : (float -> float) -> float -> float =

#open "graphics";;
open_graph "";;
begin
set_color red;
fill_circle 320 200 50;
wait_next_event [Button_down]
end;;


La syntaxe a l'air encore plus barbante que celle du C++ :doh: .
J'oublie un point virgule sur deux,alors deux points virgules par fin d'instruction c'est terminé lol.
J'espert que le compilateur d'OCALM est plus précit que celui de Visual C++.

En revanche il semble y avoir des instructions trés interessantes comme :
wait_next_event [Button_down]


Oui bof! Vu comme ça, ce n'est pas vraiment très époustouflant.... J'imagine que ce langage a d'autres richesses! Les camarades de l'INRIA ne se seraient cassé la tête pour si peu...

A propos de la gestion des évènements, l'API de Windows ou les fonctions des librairies système de Linux (ou autres Unix) offrent des fonctions très puissantes...

Patastronch
Membre Irrationnel
Messages: 1345
Enregistré le: 23 Aoû 2005, 00:53

par Patastronch » 14 Juin 2007, 10:09

Bon une légère petite démonstration de sa syntaxe.

La grande puissance du ocaml pour moi c est le filtrage (pattern matching). Ca allège le code de maniere impressionnante !

exemple :

Supposons que je veuille calculer de maniere récursive la factorielle

#let rec factorielle = function
| n when n<2 -> 1
| n when n > 1 -> factorielle(n - 1) *n ;;

Rien d'extraordinaire pour l'instant mais déjà un code plus claire pour un truc si simple.

En fait le ML permet d'associer a la "gueulle d'une élément" un retour ou une action.
On peut toujours faire pareille avec un switchou un paquet de if mais on s'appercoit vite que c'est bien pratique cette facone de présenter les choses.

En Objective Caml, le compilateur permet de renvoyer un contre exemple a notre fonction si on oublie certains cas de filtrage.

Voyons rapidement une fonction un peu plus compliquée permettant d'applatir une liste (ce que j'appelle applatir une liste c'est de décomposer tous les éléments de la liste en singleton (cad que si un élément de la liste est lui meme une liste il sera décomposer en tous ses éléments).

#let rec aplatir = function
[] -> []
| []::q -> aplatir(q)
| ((a::q)::r) -> a::aplatir(q::r);;

A savoir que :

[] représente la liste vide
t::q correspond a une liste dont t est le premier élément (la tete) et q le reste de la liste (la queue). Un élément e serait donc équivalent a la liste : e::[]

La on voit deja plus l'interet du filtrage. Et dans un tel exemple on est certain de ne pas avoir oublié de cas (ce qui est loin d'etre évident au premier coup d'oeil) car sinon Ocaml nous presenterait aussitot un contre exemple.

Bon je vais pas trop m'éterniser, il y a trop de chose a dire sur le Ocaml, mais c'était surtout pour montrer a Dominique une idée de ce qu'était le pattern matching qui n'a été que survolé dans mes exemples.



Sinon en effet poru la gestion des evenements unix n'a rien a envier a ocaml. C'estp as pour des fonctions comme wait_next_event que l'on programme en ocaml en tous cas.

Dominique Lefebvre
Membre Légendaire
Messages: 8007
Enregistré le: 03 Déc 2005, 13:00

par Dominique Lefebvre » 14 Juin 2007, 11:20

Ah oui, sympathique ton truc de filtrage! Je me disais bien aussi....

Je ne sais pas si tu te rappelles d'un langage,aujourd'hui un peu oublié: l'APL. Un langage pour mathématicien. On faisait des concours à celui qui écrivait le code le plus court, du style inverser une matrice en 1 ligne, sans appel de fonction évidement...
Et bien ton caml me rappelle un peu l'APL, dans sa forme et ses principes.

alelo
Membre Naturel
Messages: 18
Enregistré le: 14 Juin 2007, 16:12

par alelo » 14 Juin 2007, 16:36

ca sert a quoi ce programme?

VPE
Membre Naturel
Messages: 54
Enregistré le: 11 Mai 2007, 11:34

par VPE » 14 Juin 2007, 16:48

alelo a écrit:ca sert a quoi ce programme?

Ocaml ?C'est un [url="http://fr.wikipedia.org/wiki/Environnement_de_d%C3%A9veloppement_int%C3%A9gr%C3%A9"]IDE[/url] pour la programation en caml.
Et si tu fait référence au caml,sache que ce n'est pas un programme mais un langage de programmation.

Patastronch
Membre Irrationnel
Messages: 1345
Enregistré le: 23 Aoû 2005, 00:53

par Patastronch » 14 Juin 2007, 20:40

VPE a écrit:Ocaml ?C'est un [url="http://fr.wikipedia.org/wiki/Environnement_de_d%C3%A9veloppement_int%C3%A9gr%C3%A9"]IDE[/url] pour la programation en caml.
Et si tu fait référence au caml,sache que ce n'est pas un programme mais un langage de programmation.


OCaml est un langage meme s'il est implémtenté en caml (qui lui meme basé sur le ML). D'ailleur l'objet n'existe pas en Caml mais existe en O'Caml (d'ou son nom : Objective Caml). Il permet également la programmation modulaire chose que le caml ne sait pas faire.

VPE
Membre Naturel
Messages: 54
Enregistré le: 11 Mai 2007, 11:34

par VPE » 14 Juin 2007, 22:40

Patastronch a écrit:OCaml est un langage meme s'il est implémtenté en caml (qui lui meme basé sur le ML). D'ailleur l'objet n'existe pas en Caml mais existe en O'Caml (d'ou son nom : Objective Caml). Il permet également la programmation modulaire chose que le caml ne sait pas faire.

Oui c'est vrai,
Visual Basic et Visual C++ désignent a la fois des IDE,et des languages.
Il en va de meme pour Ocaml.Cependant alelo demandait quel était ce "programme" j'ai donc pensé qu'il parlait de l'IDE objective caml.
Juste par curiosité,en quels langages programme tu ?

Dominique Lefebvre
Membre Légendaire
Messages: 8007
Enregistré le: 03 Déc 2005, 13:00

par Dominique Lefebvre » 14 Juin 2007, 22:48

Tiens, dans ma grande naïveté, je croyais que VB était l'IDE version microsoft qui permettait de programmer en basic , de même que VC++ était celui du même éditeur qui permettait de programmer en C++. J'ai du me tromper...

VPE
Membre Naturel
Messages: 54
Enregistré le: 11 Mai 2007, 11:34

par VPE » 14 Juin 2007, 22:58

...non je crois qu'il y a un petit qui-pro-quo.:triste:
Si VC++ est dédié a la programmation en C++ Visaul basic lui est didié au Visual basic,non au basic.
Visual C++ est uniquement le nom d'un IDE alors que Visaul basic est un autre language.
alelo demande ce qu'est ocaml,je lui répond un IDE et Patastronch lui dit que c'est un langage,je lui ai donc précisé que c'était les deux et ai pris comme exemple VB et VC++.:we:

Bon sur ce bonne nuit :dodo:

abcd22
Membre Complexe
Messages: 2426
Enregistré le: 13 Jan 2006, 15:36

par abcd22 » 15 Juin 2007, 02:31

Moi j'ai compris qu'il demandait à quoi servait le programme donné par Patastronch.

Dominique Lefebvre
Membre Légendaire
Messages: 8007
Enregistré le: 03 Déc 2005, 13:00

par Dominique Lefebvre » 15 Juin 2007, 08:30

abcd22 a écrit:Moi j'ai compris qu'il demandait à quoi servait le programme donné par Patastronch.


Tu crois? Le premier programme exemple, celui-ci concerné par la question, comme tous les prog exemple de ce genre, ne sert à rien, sinon à donner un exemple....

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 8 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite