« Caml » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Jérôme POUZET (discuter | contributions)
Aucun résumé des modifications
Urhixidur (discuter | contributions)
Ligne 18 : Ligne 18 :


* '''PolyAML''' et '''Aspectual Caml''' : [[Programmation orientée aspect|programmation par aspects]]<ref name="PolyAML"/>{{,}}<ref name="Aspectual-Caml"/>.
* '''PolyAML''' et '''Aspectual Caml''' : [[Programmation orientée aspect|programmation par aspects]]<ref name="PolyAML"/>{{,}}<ref name="Aspectual-Caml"/>.
* '''OCamlDuce''' : manipulation robuste de [[XML]] et d’[[expression régulière|expressions régulières]], ''via'' l’intégration du langage [[CDuce]]<ref name="OCamlDuce"/>.
* '''OCamlDuce''' : manipulation robuste de [[XML]] et d’[[expression rationnelle|expressions rationnelles]], ''via'' l’intégration du langage [[CDuce]]<ref name="OCamlDuce"/>.
* '''MetaOcaml''' et sa réimplémentation '''BER MetaOCaml''' : [[métaprogrammation]] et [[macro-définition|macros]]<ref name="MetaOCaml"/>{{,}}<ref name="BER-MetaOCaml"/>.
* '''MetaOcaml''' et sa réimplémentation '''BER MetaOCaml''' : [[métaprogrammation]] et [[macro-définition|macros]]<ref name="MetaOCaml"/>{{,}}<ref name="BER-MetaOCaml"/>.
* '''OCaml-templates''' : génération de code à partir des types<ref name="OCaml-templates"/>.
* '''OCaml-templates''' : génération de code à partir des types<ref name="OCaml-templates"/>.

Version du 15 mai 2017 à 20:26

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 l'a notamment été pendant cinq ans par le professeur Guy Cousineau (université Paris Diderot)[1]. Il existe deux variantes principales de Caml.

  • Caml Light est une ancienne version, légère, principalement utilisée en milieu pédagogique[note 1]. Elle n’est plus développée et a été supplantée par OCaml.
  • OCaml est la version la plus avancée et la branche de développement active du langage. Elle ajoute de nombreuses fonctionnalités, comme un système de modules beaucoup plus poussé et le support de la programmation orientée 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 Inria.[réf. nécessaire]

Extensions

Il existe un grand nombre d'extensions de Caml, permettant au langage de couvrir beaucoup de concepts.

Voir aussi

Articles connexes

Liens externes

Notes & références

Notes

  1. Caml Light est enseigné en France dans les classes préparatoires, dans l’option informatique de la filière MPSI / MP[2].

Références

  1. « CV de Guy Cousineau », sur aeres-evaluation.fr (consulté le )
  2. « note de service nº 2013-0020 du 4-11-2013 : Enseignement de l'option informatique en classes préparatoires scientifiques Mathématiques, physique et sciences de l'ingénieur (MPSI) et Mathématiques et physique (MP) — Langage de programmation », sur education.gouv.fr (consulté le )
  3. (en) Daniel S. Dantas, David Walker, Geoffrey Washburn et Stephanie Weirich, « PolyAML : A Polymorphic Aspect-oriented Functional Programming Language », Proceedings of the ACM SIGPLAN International Conference on Functional Programming (ICFP), vol. 40, no 9,‎ , p. 306-319 (DOI 10.1145/1086365.1086404, lire en ligne [PDF])
  4. (en) Hidehiko Masuhara, Hideaki Tatsuzawa, Akinori Yonezawa et Stephanie Weirich, « Aspectual Caml : An Aspect-Oriented Functional Language », Proceedings of the ACM SIGPLAN International Conference on Functional Programming (ICFP), vol. 40, no 9,‎ , p. 320-330 (DOI 10.1145/1086365.1086405, lire en ligne [PDF])
  5. (en) « CDuce: OCamlDuce », sur cduce.org (consulté le )
  6. (en) « MetaOCaml : A compiled, type-safe, multi-stage programming language », sur cs.rice.edu (consulté le )
  7. (en) « MetaOCaml : An OCaml dialect for multi-stage programming », sur okmij.org (consulté le )
  8. (en) « Ocaml-templates »(Archive.orgWikiwixArchive.isGoogleQue faire ?), sur pps.jussieu.fr (consulté le )
  9. (en) Mark R. Shinwell, Andrew M. Pitts et Murdoch J. Gabbay, « FreshML: Programming with Binders Made Simple », Proceedings of the ACM SIGPLAN International Conference on Functional Programming (ICFP), vol. 38, no 9,‎ , p. 263-274 (DOI 10.1145/944705.944729, lire en ligne [PDF])
  10. (en) J. Furuse, « Generic Polymorphism in ML », Journées francophones des langages applicatifs (JFLA),‎ , p. 75-96 (ISBN 2-7261-1180-7, lire en ligne [PDF])
  11. « O’Jacare : Une interface objet entre O’Caml et Java »(Archive.orgWikiwixArchive.isGoogleQue faire ?), sur pps.jussieu.fr (consulté le )
  12. (en) « The OCaml system, § 12. Lexer and parser generators (ocamllex, ocamlyacc) », sur caml.inria.fr (consulté le )