Author: Christian.Queinnec@lip6.fr

## Introduction

À cette étape de sa lecture, le lecteur ne doit plus douter de la richesse d'Objective CAML. Ce langage repose sur un noyau fonctionnel et impératif et il intègre les deux grands modèles d'organisation d'applications que sont les modules et les objets. Bien que présentés comme des bibliothèques, les processus légers sont partie prenante du langage. Les primitives système, en majeure partie portables, complètent le langage avec toutes les possibilités offertes par la programmation répartie. Ces différents paradigmes de programmation se moulent dans le cadre général du typage statique avec inférence. Pour autant, ces éléments ne tranchent pas, à eux seuls, la question de sa pertinence pour le développement d'applications, ou plus prosaïquement : << est-ce un bon langage ? >>.
On ne peut à son propos utiliser l'un des arguments classiques suivants :

- (tendance marketing) << c'est un bon langage car les clients l'achètent >> ;
- (tendance historique) << c'est un bon langage car il existe des milliers de lignes déjà écrites avec >>;
- (tendance système) << c'est un bon langage car les systèmes Unix ou Windows sont écrits avec >> ;
- (tendance application phare) << c'est un bon langage car telle ou telle application a été écrite avec >> ;
- (tendance normalisation) << c'est un bon langage car il possède une spécification ISO >>.

Nous allons passer en revue une dernière fois les divers traits du langage mais cette fois sous l'angle de la pertinence de la réponse qu'il peut apporter aux besoins d'une équipe de développement. Les critères retenus pour formuler nos éléments d'évaluation prennent en compte les qualités intrinsèques du langage, son environnement de développement, les contributions de la communauté et les applications significatives réalisées. Nous confrontons enfin Objective CAML avec plusieurs langages fonctionnels proches ainsi que le langage à objets Java pour en souligner les principales différences.