Introduction
Having reached this point, the reader should no longer doubt the richness
of Objective CAML. This language rests on a functional and imperative core, and
it integrates the two major application organization models:
modules and objects. While presented as libraries, threads are an
attractive part of the language. The system primitives, portable for the
most part, complete the language with all the possibilities offered by
distributed programming. These different programming paradigms are shaped
within the general framework of static typing with inference. For all
that, these elements do not, in themselves, settle the question of
Objective CAML's relevance for developing applications, or more prosaically, ``is
it a good language?''
None of the following classic arguments can be used in its favor:
-
(marketing development) ``it's a good language because clients buy it'';
- (historical development) ``it's a good language because thousands of
lines of code have already been written in it'';
- (systems development) ``it's a good language because the Unix or
Windows systems are written in it'';
- (beacon application development) ``it's a good language because
such-and-such application is written in it'';
- (standardization development) ``it's a good language because it has
an ISO specification''.
We'll review one last time the various features of the language, but this
time from the angle of its relevance for answering a development team's
needs. The criteria selected to make up the elements of our evaluation
take into account the intrinsic qualities of the language, its development
environment, the contributions of its community and the significant
applications which have been achieved. Finally we'll compare Objective CAML
with several similar functional languages as well as the object-oriented
language Java in order to underscore the main differences.