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.