Conclusion
Table des matières
1. Conclusion

Au cours de cette formation, nous avons vu les concepts et constructions principales du langage OCaml, ainsi qu'une partie des bibliothèques fournies en standard.

Ce langage est bâti sur des bases théoriques solides avancées et propose plusieurs paradigmes de programmation (fonctionnelle, impérative, objets). Il possède un grand pouvoir d'expressivité, notamment grâce au polymorphisme et aux fonctions de 1er ordre.

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ù OCaml 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.

Un des premiers sujets de satisfaction du développement en OCaml 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.

Plusieurs aspects du langage n'ont pas été abordés, notamment:

  • les modules récursifs,
  • les types variants polymorphes,
  • les GADTs (Generalized Algebraic Data Types).

Nous n'avons pas abordé non plus certains aspects techniques:

  • les possibilités d'interface avec les langages C et Fortran, permettant la réalisation de bindings avec les bibliothèques développées dans ces langages (Gtk, ...),
  • la gestion de la mémoire.

Ces aspects pourraient être développés dans des formations ultérieures.

2. Pour aller plus loin

En plus des documentations indiquées dans la présentation, on pourra consulter les références suivantes pour continuer son apprentissage du langage et des concepts, dans différents domaines d'application:

  • Le livre [5], disponible en ligne, offre un bon panorama d'utilisations d'OCaml, avec des exemples pratiques utilisant des bibliothèques dans différents domaines (concurrence, réseau, JSON, ...),
  • Le livre [1] de Pierre Weis et Xavier Leroy est un cours de programmation utilisant Caml-light; il est cependant une très bonne introduction à la programmation fonctionnelle,
  • Le livre [2] est un cours de programmation basé sur OCaml,
  • Le livre [3] dont est inspirée cette formation présente tous les aspects du langage et les bibliothèques fournies, à l'aide de nombreux exemples dans de nombreux domaines (communication, concurrence, graphisme, interfaces utilisateurs, ...),
  • [6] est un cours de programmation système dans lequel OCaml remplace le langage C utilisé traditionnellement pour ce genre de cours (et [7] en est la traduction en anglais),
  • Les notes de cours "Using, Understanding, and Unraveling The OCaml Language" introduisent les concepts théoriques sur lesquels est basé OCaml avec des exemples pratiques,
  • Le livre [4] introduit la programmation en OCaml sous l'angle de ses utilisations pour le calcul scientifique; cet ouvrage est disponible dans les centres de documentation des centres de Rocquencourt et Grenoble.
  • Une liste de livres sur OCaml et/ou la programmation fonctionnelle.