Caml
141683
29704206
2008-05-18T17:32:00Z
Tieno
2377
portail
'''Caml''' représente 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 [[Programmation fonctionnelle|fonctionnelle]], [[Programmation impérative|impérative]] et [[Programmation orientée objet|orientée objet]]. C'est de plus un langage fortement typé.
Le langage Caml est développé depuis 1985 par les équipes Formel puis Cristal de l'[[Institut national de recherche en informatique et en automatique|INRIA]]. Il existe deux implémentations de Caml :
* '''[[Objective Caml]]''' est l'implémentation la plus avancée,
* '''[[Caml Light]]''' est une implémentation légère, souvent utilisée dans les milieux académiques.
Le langage Caml est, dans sa version '''[[Caml Light]]''', enseigné en option informatique dans la plupart des [[Classe préparatoire aux grandes écoles|classes préparatoires aux grandes écoles]], en filière [[Mathématiques, physique et sciences de l'ingénieur|MPSI]] / [[Mathématiques, physique|MP]]. Le style fonctionnel le rend relativement proche des mathématiques, notamment grâce à la récursivité, le typage fort rend son usage sûr (mais moins souple pour le programmeur) et la gratuité de sa distribution ne nuit pas au contribuable (bien que l'INRIA soit un organisme public). De plus, la particularité des [[ML (langage)|langages ML]], à savoir la reconnaissance de motifs (''pattern matching''), permet une syntaxe au cas par cas claire et lisible dans les fonctions récursives. Elle est aussi utilisée dans le rattrapage des [[Système de gestion d'exceptions|exceptions]], en particulier pour la gestion des erreurs.
== Consortium ==
La conception et le développement du langage Caml et de 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 langage Caml, permettant au langage de recouvrir le plus de concepts possibles.
*{{en}} [http://www.cs.princeton.edu/~dpw/papers/icfp2005.pdf PolyAML] : 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.
*{{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://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.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]
*{{fr}} [http://www.pps.jussieu.fr/~henry/ojacare/ O'Jacaré] (basé sur camljava) pour lancer un main en Java
== Voir aussi ==
=== Liens internes ===
* [[Caml Light]]
* [[Objective Caml]]
* [[Haskell]]
=== Liens externes ===
* {{fr}} [http://caml.inria.fr/index.fr.html Site officiel]
* {{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/cours_caml 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)]
* {{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]
{{Portail|programmation informatique}}
[[Catégorie:Langage de programmation]]
[[Catégorie:Langage fonctionnel]]
[[Catégorie:Théorie des types]]
[[en:Caml]]
[[it:CAML]]
[[no:Caml]]
[[pt:Caml]]
[[tr:Caml]]
[[uk:Categorical Abstract Machine Language]]