Aller au contenu

« Caml » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Ordre des paragraphes.
Ramzan (discuter | contributions)
mAucun résumé des modifications
Ligne 5 : Ligne 5 :
Descendant du [[ML (langage)|langage ML]], le Caml est développé depuis 1985 par les équipes Formel puis Cristal de l'[[Institut national de recherche en informatique et en automatique|INRIA]] et notamment pendant cinq ans par le professeur [[Guy Cousineau]]<ref>[http://www.aeres-evaluation.fr/content/download/15025/248183/file/Cousineau%20Guy-CV.pdf Guy Cousineau - AERES - CV], consulté sur www.aeres-evaluation.fr le {{Date|15|février|2011}}</ref> ([[Université Paris Diderot]]). Il existe deux implémentations principales de Caml.
Descendant du [[ML (langage)|langage ML]], le Caml est développé depuis 1985 par les équipes Formel puis Cristal de l'[[Institut national de recherche en informatique et en automatique|INRIA]] et notamment pendant cinq ans par le professeur [[Guy Cousineau]]<ref>[http://www.aeres-evaluation.fr/content/download/15025/248183/file/Cousineau%20Guy-CV.pdf Guy Cousineau - AERES - CV], consulté sur www.aeres-evaluation.fr le {{Date|15|février|2011}}</ref> ([[Université Paris Diderot]]). Il existe deux implémentations principales de Caml.


# '''[[Caml Light]]''' est une implémentation légère, souvent utilisée dans les milieux pédagogiques (elle est enseigné en option informatique dans la plupart des [[Classe préparatoire aux grandes écoles|classes préparatoires]] en filière [[Classes préparatoires mathématiques, physique et sciences de l'ingénieur|MPSI]] / [[Classes préparatoires mathématiques, physique|MP]]). Caml Light n’est cependant plus développé et a été supplanté par OCaml.
* '''[[Caml Light]]''' est une implémentation légère, souvent utilisée dans les milieux pédagogiques (elle est enseigné en option informatique dans la plupart des [[Classe préparatoire aux grandes écoles|classes préparatoires]] en filière [[Classes préparatoires mathématiques, physique et sciences de l'ingénieur|MPSI]] / [[Classes préparatoires mathématiques, physique|MP]]). Caml Light n’est cependant plus développé et a été supplanté par OCaml.
# '''[[OCaml]]''' est l'implémentation la plus avancée. Elle ajoute de nombreuses fonctionnalités, comme un système de [[Module (programmation)|modules]] beaucoup plus poussé et le support de la programmation orienté objet (reposant sur le ''[[duck typing]]'') dont elle tire son nom.
* '''[[OCaml]]''' est l'implémentation la plus avancée. Elle ajoute de nombreuses fonctionnalités, comme un système de [[Module (programmation)|modules]] beaucoup plus poussé et le support de la programmation orienté objet (reposant sur le ''[[duck typing]]'') dont elle tire son nom.


== Consortium ==
== Consortium ==
Ligne 15 : Ligne 15 :


Il existe un grand nombre d'extension du Caml, permettant au langage de recouvrir le plus de concepts possibles.
Il existe un grand nombre d'extension du Caml, permettant au langage de recouvrir le plus de concepts possibles.
#{{en}} [http://www.cs.princeton.edu/~dpw/papers/icfp2005.pdf PolyAML] : {{lang|en|A Polymorphic Aspect-oriented Functional Programming Language}}. Extension pour la [[Programmation orientée aspect|programmation par aspect]].
*{{en}} [http://www.cs.princeton.edu/~dpw/papers/icfp2005.pdf PolyAML] : {{lang|en|A Polymorphic Aspect-oriented Functional Programming Language}}. Extension pour la [[Programmation orientée aspect|programmation par aspect]].
#{{en}} [http://www.cs.iastate.edu/~leavens/FOAL/papers-2005/tatsuzawa-masuhara-yonezawa.pdf Aspectual Caml]: an Aspect-Oriented Functional Language. Extension pour la programmation par aspect.
*{{en}} [http://www.cs.iastate.edu/~leavens/FOAL/papers-2005/tatsuzawa-masuhara-yonezawa.pdf Aspectual Caml]: an Aspect-Oriented Functional Language. Extension pour la programmation par aspect.
#{{fr}} [http://www.lri.fr/~signoles/mvc.fr.html MVC] en OCaml.
*{{fr}} [http://www.lri.fr/~signoles/mvc.fr.html MVC] en OCaml.
#{{en}} [http://www.cduce.org/ocaml.html OCamlDuce] : XML et typage.
*{{en}} [http://www.cduce.org/ocaml.html OCamlDuce] : XML et typage.
#{{en}} [http://metaocaml.org/ Meta-ocaml] : types et macros.
*{{en}} [http://metaocaml.org/ Meta-ocaml] : types et macros.
#{{en}} [http://www.pps.jussieu.fr/~maurel/programmation/ Ocaml-templates] : génération de code à partir des types.
*{{en}} [http://www.pps.jussieu.fr/~maurel/programmation/ Ocaml-templates] : génération de code à partir des types.
#{{en}} [http://www.cl.cam.ac.uk/users/amp12/papers/frepbm/frepbm.pdf FreshML]: Programming with Binders Made Simple
*{{en}} [http://www.cl.cam.ac.uk/users/amp12/papers/frepbm/frepbm.pdf FreshML]: Programming with Binders Made Simple
#{{en}} [http://jfla.inria.fr/2001/actes/07-furuse.ps Generic Polymorphism in ML]
*{{en}} [http://jfla.inria.fr/2001/actes/07-furuse.ps Generic Polymorphism in ML]
#{{fr}} [http://www.pps.jussieu.fr/~henry/ojacare/ O'Jacaré] (basé sur camljava) pour lancer un main en Java
*{{fr}} [http://www.pps.jussieu.fr/~henry/ojacare/ O'Jacaré] (basé sur camljava) pour lancer un main en Java
#{{en}} [http://caml.inria.fr/pub/docs/manual-ocaml/manual026.html Lex/Yacc] lexer and parser generators, pour faire de l'analyse lexicale et syntaxique.
*{{en}} [http://caml.inria.fr/pub/docs/manual-ocaml/manual026.html Lex/Yacc] lexer and parser generators, pour faire de l'analyse lexicale et syntaxique.


== Voir aussi ==
== Voir aussi ==
=== Articles connexes ===
=== Articles connexes ===
# [[Haskell]]
* [[Haskell]]


=== Liens externes ===
=== Liens externes ===
# {{fr}} {{officiel|http://caml.inria.fr/}}
* {{fr}} {{officiel|http://caml.inria.fr/}}
# {{fr}} [http://www.pps.jussieu.fr/Livres/ora/DA-OCAML/index.html ''Développement d'applications avec Objective Caml''], livre O'Reilly en ligne (publié en 2002 mais reste très complet).
* {{fr}} [http://www.pps.jussieu.fr/Livres/ora/DA-OCAML/index.html ''Développement d'applications avec Objective Caml''], livre O'Reilly en ligne (publié en 2002 mais reste très complet).
# {{fr}} [http://www.france-ioi.org/algo/chapters.php Cours de programmation en Caml pour débutants]
* {{fr}} [http://www.france-ioi.org/algo/chapters.php Cours de programmation en Caml pour débutants]
# {{en}} [http://www.pps.jussieu.fr/~cousinea/Caml/caml_history.html A brief history of Caml (as I remember it)]
* {{en}} [http://www.pps.jussieu.fr/~cousinea/Caml/caml_history.html A brief history of Caml (as I remember it)]
# {{fr}} [http://www.cadichonne.net/CAML.htm Exercices de programmation en Caml], avec corrigés
* {{fr}} [http://www.cadichonne.net/CAML.htm Exercices de programmation en Caml], avec corrigés
# {{fr}} [http://pauillac.inria.fr/~quercia/cdrom/cours/index.html#tp-caml Exercices en Caml avec corrigés]
* {{fr}} [http://pauillac.inria.fr/~quercia/cdrom/cours/index.html#tp-caml Exercices en Caml avec corrigés]


=== Références ===
=== Références ===

Version du 27 janvier 2014 à 12:29

Caml (prononcé camel, signifie Categorical Abstract Machine Language) est un langage de programmation généraliste conçu pour la sécurité et la fiabilité des programmes. Il se prête à des styles de programmation fonctionnelle, impérative et orientée objet. C'est de plus un langage fortement typé.

Le style fonctionnel rapproche le langage Caml de l’écriture mathématique, notamment grâce à la récursivité et au filtrage par motif (pattern matching). Ce dernier, particularité de la famille ML, offre une syntaxe au cas par cas claire et lisible, et est aussi utilisé dans le rattrapage des exceptions, en particulier pour la gestion des erreurs. Le typage fort rend l’usage sûr mais moins souple pour le programmeur. Enfin, Caml pratique l’inférence de types pour déterminer automatiquement le type des variables et expressions et permet la généricité.

Descendant du langage ML, le Caml est développé depuis 1985 par les équipes Formel puis Cristal de l'INRIA et notamment pendant cinq ans par le professeur Guy Cousineau[1] (Université Paris Diderot). Il existe deux implémentations principales de Caml.

  • Caml Light est une implémentation légère, souvent utilisée dans les milieux pédagogiques (elle est enseigné en option informatique dans la plupart des classes préparatoires en filière MPSI / MP). Caml Light n’est cependant plus développé et a été supplanté par OCaml.
  • OCaml est l'implémentation la plus avancée. Elle ajoute de nombreuses fonctionnalités, comme un système de modules beaucoup plus poussé et le support de la programmation orienté objet (reposant sur le duck typing) dont elle tire son nom.

Consortium

La conception et le développement du langage Caml ainsi que son environnement sont fédérés par un consortium dirigé par l'INRIA.

Les extensions Caml

Il existe un grand nombre d'extension du Caml, permettant au langage de recouvrir le plus de concepts possibles.

Voir aussi

Articles connexes

Liens externes

Références

  1. Guy Cousineau - AERES - CV, consulté sur www.aeres-evaluation.fr le