J'ai lu "OCaml for Scientists",
ouvrage du Docteur Jon
Harrop, dédié à la programmation d'OCaml. Le côté "scientifique", même
s'il est omniprésent, ne semble vraiment restrictif que pour les
exemples complexes exposés à la fin de l'ouvrage.
Le
langage OCaml allie des possibilités functionnelles et impératives. Il
est très rapide et doté d'un ramasse-miettes. Son inférence de types
rend le codage particulièrement concis, sûr et agréable. Le sur-langage
de modules constitue, avec les possibilités objet (Objective-Caml), un
puissant outil de génie logiciel.
Sans connaissance
préalable des langages du type ML, OCaml for Scientists vous porte
jusqu'à la réalisation d'exemples scientifiques élaborés mettant en
oeuvre plusieurs librairies puissantes - dont l'apprentissage de
l'utilisation a été traité au cours de l'ouvrage.
Les
prérequis pour suivre correctement sont faibles car l'auteur, dans son
développement progressif des leçons, introduit aussi les concepts
classiques de la programmation : la récursion en est un exemple.
Toutefois, la connaissance d'un langage de programmation impératif tel
que C ou Pascal ou fonctionnel, Lisp ou Scheme, s'il n'est pas
absolument requis, pourra rendre la lecture plus aisée.
Une partie importante, au début de l'ouvrage, est consacrée à
l'apprentissage du langage proprement dit : on y découvre un
exposé des fonctionnalités offertes par ses nombreux mots-clefs
illustrés par de nombreux exemples clairs.
Cet exposé ne
se contente pas d'être un tutorial du langage, l'auteur montre
l'utilisation adéquate des possibilités d'OCaml - quelles sont les
bonnes pratiques de programmation - et va souvent beaucoup plus loin en
justifiant les choses par une étude de la représentation interne
employée pas le compilateur.
Cette partie du livre,
travaillée conjointement avec la pratique, de par la limpidité de son
exposé, constitue probablement un des moyens les plus efficaces qui
s'offre au débutant, pour acquérir rapidement une compréhension du
langage de base nécessaire pour programmer.
Le Dr Harrop
expose les choses d'une telle façon que la lecture reste facile même
quand des sujets scientifiques non triviaux sont exposés.
Les
coloration syntaxique, sur les grandes pages très blanches rendent le
livre agréable à ouvrir. Ces deux aspects jouent dans le
même sens pour donner une impression de clarté et de simplicité.
L'ouvrage, truffé d'exemples, a une vocation pratique et les différents
logiciels composant le "système OCaml" : le top-level personnalisable,
les divers compilateurs, le visualisateur de dépendances et le
profileur, y sont présentés avec leur utilisation.
Une mention spéciale pour les exemples :
si ce n'est la table des matières, il est difficile de trouver une page
qui ne présente pas plusieurs exemples concrets de programmation.
Certains d'entre eux peuvent surprendre tellement ils sont élaborés.
De même, pour le côté pratique : l'utilisation de certaines librairies
dont "command line arguments", "big arrays", "vector matrix", lexing et
parsing, est présentée en détail.
Malgré l'orientation
scientifique marquée, on peut penser que les premiers chapitres
possèdent une approche plus générale. D'autres parties telles que la
visualisation (avec openGL) ou le lexing et le parsing serviront
peut-être aux concepteurs de jeux.
Outre "OCaml for
Scientists", je possède "Programmation fonctionnelle, générique et
objet (Une introduction avec le langage OCaml)" de Philippe Narbel. Les
deux ouvrages se complètent, OCaml for Scientists étant plus
concret. Pour ne citer ici que les parties spécifiques à OFS : celui-ci
présente des librairies et étudie l'optimisation en détail.
Certes, amha, une partie détaillée sur l'écriture de foncteurs aurait
été bienvenue. Cependant l'étude du livre donne une compréhension du
langage telle que l'on puisse entreprendre la programmation de projets
consistants.
L'ouvrage, précédé d'un glossaire, est divisé en une dizaine d'épais chapitres :
Introduction,
Program Structure, Data Structures, Numérical Analysis, Input and
Output, Visualization, Optimization, Libraries, Simple Examples et
Complete Examples, Bibliography, Advanced Topics and Troubleshouting.
Pour conclure, OCaml for Scientists est un excellent livre, clair et
pratique qui peut être utilisé comme ouvrage de référence.