Author: Christian.Queinnec@lip6.fr

## Plan de l'ouvrage

Le présent ouvrage est constitué de quatre parties principales, entourées de deux chapitres et agrémenté de deux annexes, d'une bibliographie, d'un index des éléments du langage et d'un index des concepts de programmation.

Chapitre 1 :
  Ce chapitre est une rapide description de l'installation de la version `2.04` du langage Objective CAML pour les systèmes les plus courants (Windows, Unix et MacOS).
Partie I : Noyau du langage
  La première partie est une présentation complète des éléments de base du langage Objective CAML. Le chapitre 2 est une plongée dans le noyau fonctionnel du langage. Le chapitre 3 est le pendant du précédent et décrit la partie impérative du langage. Le chapitre 4 compare les styles fonctionnel et impératif << purs >> puis présente leur utilisation conjointe. Le chapitre 5 présente la bibliothèque graphique. Le chapitre 6 expose trois applications : gestion d'une base de données simple, un interprète d'un mini-Basic et un jeu solitaire bien connu, le démineur.
Partie II : Outils de développement
  La deuxième partie de l'ouvrage décrit les différents outils pour la réalisation d'applications. Le chapitre 7 compare les différents modes de compilation que sont la boucle d'interaction et les compilateurs en ligne de commande de code-octet et natif. Le chapitre 8 présente les principales bibliothèques fournies avec la distribution du langage. Le chapitre 9 explique les mécanismes de récupération automatique de mémoire et détaille celui utilisé par Objective CAML. Le chapitre 10 explique l'utilisation des outils de mise au point et d'analyse de programmes. Le chapitre 11 s'intéresse aux outils d'analyses lexicale et syntaxique. Le chapitre 12 montre comment interfacer des programmes Objective CAML avec C. Le chapitre 13 construit une bibliothèque et une application. Cette bibliothèque offre des outils pour la construction d'interfaces graphiques. L'application est une recherche de chemins de moindre coût dans un graphe, son interface graphique utilise la bibliothèque précédente.
Partie III : Organisation d'applications
  La troisième partie décrit les deux organisations d'un programme que permettent les modules et les objets. Le chapitre 14 est une présentation des modules simples et paramétrés du langage. Le chapitre 15 introduit l'extension objet d'Objective CAML. Le chapitre 16 compare ces deux types d'organisation et indique l'intérêt de leur mélange pour augmenter l'extensibilité des programmes. Le chapitre17 décrit deux applications conséquentes : les jeux à deux joueurs qui mettent en oeuvre plusieurs modules paramétrés utilisés pour deux jeux différents, et une simulation d'un monde de robots montrant la communication entre objets.
Partie IV : Concurrence et répartition
  La quatrième partie introduit les programmations concurrente et répartie en détaillant la communication entre processus, légers ou non, et sur le réseau Internet. Le chapitre 18 montre le lien direct entre le langage et les bibliothèques système, en particulier les notions de processus et de communication. Le chapitre 19 amène l'indéterminisme de la programmation concurrente en présentant les processus légers d'Objective CAML. Le chapitre 20 discute de la communication entre processus, via les prises de communication réseau (sockets), dans le modèle de mémoire répartie. Le chapitre 21 présente tout d'abord une boîte à outils pour applications client-serveur. Elle est utilisée ensuite pour étendre les robots de la partie précédente au modèle client-serveur. Enfin, nous adaptons certains programmes déjà rencontrés sous forme de serveur HTTP.
Chapitre 22
  Ce dernier chapitre fait le point sur le développement d'applications en Objective CAML et présente les applications les plus connues des langages de la famille ML.
Annexes
  La première annexe explique la notion de types cycliques utilisée dans le typage des objets. La deuxième annexe décrit les évolutions du langage présentes dans la version expérimentale `2.99`. Celles-ci seront probablement intégrées dans les prochaines versions d'Objective CAML (`3.xx`).

Chaque chapitre comprend une présentation générale du thème abordé, un plan du chapitre, les différentes sections de celui-ci, des énoncés d'exercices à réaliser, un résumé et une ultime section intitulée << Pour en savoir plus >> qui indique les références bibliographiques du thème abordé.