OCaml : langage de programmation multi-paradigme

Fiche PLUME
  • Création ou MAJ importante : 08/01/2014
  • Correction mineure : 08/01/2014
  • Auteur : Stéphane Grognet - IREM des Pays de la Loire (Université de Nantes, CNRS)
  • Responsable thématique : fenix-contact fenix-contact (CNRS)
  • Relecteur 1 : Xavier Clerc
  • Relecteur 2 : Maxence Guesdon
Mots clés
Description
Fonctionnalités générales

Le langage OCaml est un langage de programmation fonctionnel permettant également les programmations impérative et orientée objets. Il est également doté d'un puissant système de modules et foncteurs (fonctions sur les modules).

Le système d'inférence des types (les types sont devinés par le compilateur) permet un développement rapide des programmes. Le typage statique (i.e. à la compilation) offre la garantie d'une exécution correcte.

La compilation vers du bytecode offre une grande portabilité. L'utilisation interactive dans un shell de commandes est également possible. Enfin, la compilation en code natif donne une rapidité d'exécution proche de celle des programmes écrits en C.

Exemple de code, la fonction factorielle :

let rec fact = function
  0 -> 1
| n -> n * fact (n-1);;

La force du typage statique s'exprime de manière frappante dans le filtrage des multiplets ; l'exemple suivant est un style de programmation inaccessible à Python par exemple.

let a_plus_b_fois_c = fun a b c ->
  match ( a , b , c ) with
  | ( true , _ , _ ) | ( _ , true , true ) -> true
  | ( _ , _ , _ ) -> false ;;

Le compilateur infère le type de la fonction :

val a_plus_b_fois_c : bool -> bool -> bool -> bool = <fun>
Autres fonctionnalités

La distribution standard inclut également :

  • un outil graphique pour parcourir les bibliothèques (ocamlbrowser) ;
  • un générateur de documentation à partir des commentaires du code source (ocamldoc), équivalent de javadoc ou doxygen ;
  • un débogueur (ocamldebug) ;
  • un outil de profilage (ocamlprof) ;
  • un outil de compilation (ocamlbuild) ;
  • des générateurs d'analyseurs lexicaux (ocamllex) et grammaticaux (ocamlyacc) ;
  • un outil de pre-processing et pretty-printing (camlp4).
Interopérabilité

Il est possible d'interfacer avec du code C ou Fortran.

Contexte d'utilisation dans mon laboratoire/service

Fabrication de la bibliothèque ocamlmath et de sa documentation.
Utilisation de la bibliothèque ocamlmath.

Limitations, difficultés, fonctionnalités importantes non couvertes

L'installation est décrite pour différents environnements.
L'installation sous Microsoft Windows semble requérir un minimum de travail : http://ocaml.org/learn/portability.html
Une distribution binaire est cependant disponible : http://protz.github.com/ocaml-installer/

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

FreeBSD, Debian, Mandriva, Fedora, Ubuntu, Red Hat, Gentoo, Suse, Mageia, Fink, MacPorts... : http://ocaml.org/docs/install.html

Plates-formes

amd64, ia32(=x86), powerPC, ARM, SPARC : http://ocaml.org/learn/portability.html

Logiciels connexes
Environnement de développement
Type de structure associée au développement
Eléments de pérennité

OCaml est développé par Inria depuis 1985 et un consortium OCaml existe.

Une page référence l'ensemble du support commercial disponible.

Références d'utilisateurs institutionnels

Différentes organisations publiques ou commerciales l'utilisent : CEA, Dassault Aviation, Dassault Systèmes, Esterel Technologies... Plus de détail ici : http://ocaml.org/learn/companies.html

Un seul courtier en bourse avoue utiliser OCaml : http://www.janestreet.com/technology, mais on peut conjecturer qu'il en existe d'autres, puisque l'utilisation d'OCaml est un avantage concurrentiel que l'on n'a pas forcément intérêt à dévoiler.

Environnement utilisateur
Liste de diffusion ou de discussion, support et forums

Site de la communauté des utilisateurs

Introduction au langage OCaml

Il y a différentes ressources, dont des livres et des listes de diffusion :

Il y a des sites de classification des bibliothèques :

La compagnie OcamlPro vend des stages et diffuse des outils de développement libres.

Documentation utilisateur

Plusieurs livres en différentes langues concernent OCaml ; certains sont téléchargeables.

À signaler, le livre gratuit Le langage Caml (qui porte cependant sur une version antérieure).

Divers (astuces, actualités, sécurité)

La dernière version est la version 4.01.

Il y a des articles de recherche au sujet d'OCaml : http://ocaml.org/docs/papers.html

Sécurité et langages fonctionnels

Contributions