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:
Ces aspects pourraient être développés dans des formations ultérieures.
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: