Texte
Bien que l'informatique soit devenue une activité industrielle, à
bien des égards le succès d'un langage de programmation est
affaire de subjectivité. Si << le coeur a ses raisons que la
raison ignore >> alors Objective CAML est un choix raisonnable pour un amant de
coeur.
Il repose sur des fondements théoriques solides tout en disposant
d'un large spectre de paradigmes de programmation. Si on ajoute la
simplicité de la prise de contact avec le langage que permet la
boucle d'interaction, cela en fait un langage parfaitement adapté
à l'enseignement.
-
Les types structurés et les types abstraits permettent
d'aborder les problèmes d'algorithmique et leurs structures de
données complexes tout en s'abstrayant des problèmes de
représentation mémoire et d'allocation.
- Le modèle théorique fonctionnel sous-jacent au langage
fournit une introduction précise aux notions
d'évaluation et de typage dont << l'honnête programmeur >> se doit
d'être instruit.
- Les différents modèles de programmation peuvent être
abordés indépendamment les uns des autres : de la structuration
modulaire ou par objets des logiciels à la programmation système de bas
niveau, il est peu de domaines où Objective CAML ne soit pas
pertinent.
- Son adéquation avec la programmation symbolique en fait un
excellent support pour des enseignements théoriques comme
la compilation ou l'intelligence artificielle.
Pour ces qualités, Objective CAML est souvent utilisé comme support
d'enseignement à l'initiation à l'informatique aussi bien que pour
des cours de programmation avancée qui explicitent le lien entre le
haut niveau d'abstraction du langage et son exécution. Nombre
d'enseignants ont été et restent séduits par l'intérêt
pédagogique d'Objective CAML et, par voie de conséquence, nombre
d'informaticiens y ont été formés.
Un des premiers sujets de satisfaction du développement en Objective CAML
est son confort d'utilisation. Le compilateur se charge rapidement et
son inférence statique de types ne laisse rien échapper. D'autres
analyses statiques du code donnent de précieux indices d'anomalies
sinon d'erreurs pour le programmeur : les filtrages incomplets sont
signalés, l'application partielle d'une fonction dans une séquence
est détectée, etc. À ce premier sujet de satisfaction s'en ajoute
un second : le compilateur engendre très rapidement un code
efficace.
Performance du compilateur, concision d'expression de la programmation
fonctionnelle, qualité et diversité des bibliothèques font
d'Objective CAML un langage parfaitement adapté aux besoins du << logiciel
jetable >>. Mais ce serait le réduire que de le cantonner à ce
seul domaine d'application. Pour ces mêmes raisons, Objective CAML est un
outil précieux d'expérimentation et de prototypage
d'applications. De plus, lorsqu'aux traits déjà cités
viennent s'ajouter les mécanismes de structuration des modules et des
objets, le langage ouvre la voie à la conception et au
développement d'applications abouties.
Enfin, Objective CAML et sa communauté de développeurs forment un milieu
extrêmement réactif à l'innovation dans le domaine de la
programmation. La libre disponibilité et la diffusion des sources du
langage offrent un terrain d'expérimentation ouvert aux concepts
émergeants.
L'apprentissage d'Objective CAML réclame un certain effort au programmeur
familier d'autres langages. Et ce, alors même que l'objet de son
étude est en évolution constante. Nous espérons que sans masquer la
complexité de certains concepts, cet ouvrage facilitera cette phase
d'apprentissage et pourra ainsi accélérer le retour sur
investissement du développeur d'applications en Objective CAML.