Caml est un langage de programmation généraliste, pour coder dans un style fonctionnel, impératif ou orienté objet. Petite découverte de Caml…
Le langage Caml a été développé au sein des équipes Formel, Cristal, puis Gallium de l’INRIA. OCaml offre un langage de programmation plus riche et dispose de compilateurs produisant du code natif efficace pour de nombreuses architectures. Les deux implémentations de Caml proposent un système de types puissant, doté de polymorphisme paramétrique et d’inférence de types. L’inférence de types permet de plus de définir de telles opérations sans devoir expliciter le type de leurs paramètres et résultat. Caml propose aussi des types de données algébriques définissables par l’utilisateur et le filtrage. De nouveaux types de données algébriques peuvent être définis comme combinaisons d’enregistrements et de sommes. Des fonctions opérant sur ces structures de données peuvent ensuite être définies par filtrage, une forme généralisée de la classique construction switch, qui offre un moyen concis et élégant d’analyser et de nommer les données simultanément. Caml a également une gestion automatique de la mémoire grâce à un glaneur de cellules incrémental aussi rapide que discret. Caml présente aussi la compilation séparée d’applications autonomes. Des compilateurs portables vers code-octets permettent de créer des applications autonomes à partir de programmes Caml Light ou OCaml. Une foreign function interface permet au code Caml d’interopérer avec du code C lorsque cela est nécessaire. Une utilisation interactive de Caml est également possible, grâce à une boucle lire-évaluer-afficher. En outre, OCaml propose un système de modules sophistiqué, qui permet d’organiser les modules de façon hiérarchique et de paramétrer un module par d’autres modules ; une couche orientée objet expressive, qui offre héritage multiple et classes paramétrées ; des compilateurs vers code natif efficaces. En plus de son compilateur vers code-octets, OCaml propose un compilateur capable de produire du code machine efficace pour de nombreuses architectures.
Pour en savoir plus : http://ocaml.org/index.fr.html