Author: Christian.Queinnec@lip6.fr

## Objectifs

Objective CAML est un langage de programmation : un de plus dira-t-on ! Ils sont en effet déjà nombreux et pourtant il en apparaît constamment de nouveaux. Au delà de leurs disparités, la conception et la genèse de chacun d'eux procèdent d'une motivation partagée : la volonté d'abstraire.

S'abstraire de la machine
  En premier lieu, un langage de programmation permet de négliger l'aspect << mécanique >> de l'ordinateur; il autorise même à oublier le modèle du microprocesseur ou le système d'exploitation sur lequel sera exécuté le programme.
S'abstraire du modèle opératoire
  La notion de fonction que possède sous une forme ou une autre la plupart des langages est empruntée aux mathématiques et non à l'électronique. D'une manière générale, les langages substituent des modèles formels aux conceptions purement calculatoires. Ils y gagnent en expressivité.
Abstraire les erreurs
  Il s'agit ici de la tentative de garantir la sûreté d'exécution; un programme ne doit pas se terminer brutalement ou devenir incohérent en cas d'erreur. Un des moyens pour y parvenir est le typage statique fort des programmes et la mise en oeuvre d'un mécanisme d'exceptions.
Abstraire les composants (i)
  Les langages de programmation donnent la possibilité de découper une application en différents composants logiciels, plus ou moins indépendants et autonomes. La modularité permet une structuration de plus haut niveau de l'ensemble d'une application complexe.
Abstraire les composants (ii)
  L'existence d'unités de programmes a ouvert la possibilité de leur réutilisation dans d'autres contextes que ceux de leur développement. Les langages à objets constituent une autre approche de la réutilisabilité permettant la réalisation très rapide de prototypes.

Objective CAML est un langage récent qui se place dans l'histoire des langages de programmation comme un lointain descendant de LISP ayant su tirer les enseignements de ses cousins en incorporant les principales caractéristiques des autres langages. Il est développé à l'INRIA1 et s'appuie sur une longue expérience de conception de langages de la famille ML. Objective CAML est généraliste pour l'expression d'algorithmes symboliques ou numériques. Il est orienté objet et possède un système de modules paramétrés. Il permet le développement d'applications concurrentes ou distribuées. Il possède une excellente sûreté à l'exécution grâce à son typage statique, son mécanisme d'exceptions et son récupérateur automatique de mémoire. Il est performant tout en étant portable. Enfin, il dispose d'un riche environnement de développement.
Objective CAML n'a jamais fait l'objet d'une présentation au << grand public >>. C'est la tâche à laquelle se sont attelés les auteurs en donnant à cet ouvrage trois objectifs :

1. Décrire de manière approfondie le langage Objective CAML, ses bibliothèques et son environnement de développement.
2. Montrer et expliquer quels sont les concepts qui se cachent derrière les styles de programmation utilisables avec Objective CAML.
3. Illustrer par de nombreux exemples comment Objective CAML peut servir de langage de développement pour différentes familles d'applications.

Le but des auteurs est de fournir des éléments de choix entre les différents styles de programmation et les différentes possibilités d'organisation d'un programme pour, en adéquation avec un problème donné, obtenir une maintenance facilitée et une bonne réutilisabilité des composants logiciels développés.