A vous de jouer: Caml

Qi ZHU
ELP-2018
Published in
5 min readJun 24, 2018

Bonjour tout le monde. Bienvenue à Next One For Coding, le nouveau talkshow pour les fans de programmation. Aujourd’hui, nous avons le plaisir d’inviter Caml à notre entretien pour dévoiler le mystère de ce langage.

Q : Bonjour Caml !

C : Bonjour Qi. Bonjour tout le monde.

Q : Tout d’abord, pouvez-vous vous présenter en quelques phrases ?

C : Bien sûr. Je suis un langage de programmation généraliste conçu pour la sécurité et la fiabilité des programmes. Les styles de programmation fonctionnelle, impérative et orientée objet sont tous possibles à réaliser avec moi. Je suis aussi un langage fortement typé.

Q : Excusez-moi, vous pouvez expliquer un peu plus ce qui signifie « fortement typé » ?

C : En fait, dans un langage fortement typé, chaque élément du programme a un type unique, connu et vérifié au moment de la compilation, ce qui permet de déceler des erreurs avant d’exécuter le programme. Prenons un exemple, il sera impossible de comparer un entier avec une chaîne de caractères avec moi.

Q : Ok c’est plus clair maintenant. Vous pouvez présenter un peu votre histoire ?

C : J’appartiens à la famille de langage ML (Meta Language). Je suis développé depuis 1985 par les équipes de l’Inria (Institut National de Recherche en Informatique et Automatique). Après une longue réflexion sur les langages de programmation, je m’organise autour d’un petit nombre de notions de base, chacune facile à comprendre, et dont la combinaison se révèle extrêmement féconde. Longtemps réservé à de grosses machines coûteuses, je suis maintenant disponible gratuitement sur toute une gamme de machines. Je suis accessible à un vaste public, de l’amateur curieux au professionnel. Une variante active de moi est OCaml. Par rapport à l’ancienne variante Caml Light, qui est obsolète maintenant, elle ajoute de nombreuses fonctionnalités, comme un système de modules beaucoup plus poussé et le support de la programmation orientée objet dont elle tire son nom.

Q : Tout à l’heure, vous avez parlé de style fonctionnel, impératif et orienté objet, vous pouvez expliquer un peu plus ?

C : Le style fonctionnel signifie une écriture mathématique, notamment grâce à la récursivité et au filtrage par motif (pattern matching). C’est aussi une particularité de la famille ML, qui offre une syntaxe au cas par cas claire et lisible, et est aussi utilisé dans le rattrapage des exceptions, en particulier pour la gestion des erreurs.

Le style impératif est plutôt familier pour des gens qui utilisent souvent des boucles for, while et do. Il s’agit de modifier un état : l’ordinateur commence l’exécution du programme dans un certain état initial, que l’exécution du programme modifie jusqu’à parvenir à un état final qui contient le résultat voulu.Toutes ces opérations qui modifient physiquement le contenu des adresses mémoires sont appelées effets (ou encore effets de bord).

Le dernier style orienté-objet est facile pour des programmeurs en Java. Un objet est une structure de données valuées et cachées qui répond à un ensemble de messages. Cette structure de données définit son état tandis que l’ensemble des messages qu’il comprend décrit son comportement.

Donc comme vous le voyez, tout est possible avec moi.

Q : Effectivement, vous êtes vraiment puissant. Vu que nous connaissons votre histoire, votre caractéristique, pouvons-nous partir avec un exemple de code?

C : Pas de problème.

Voici un exemple simple :

Les opérations +, -, * et / permettent respectivement de faire la somme, la différence, le produit et le quotient de deux entiers.
Vous voyez ici un exemple avec interface interactive.

Les lignes précédées d’un # sont les lignes de commande ; les lignes précédées de — : sont les lignes de réponse

Toute ligne de commande se termine par deux point-virgules comme ceci “ ;; “. C’est une façon de me dire “vas-y, exécute ce qu’il y a avant les deux point-virgules”. Quand je réponds, j’indique d’abord le type de ce que je renvoie (ici des entiers : int) puis la valeur du résultat du calcul.

Un exemple de fonction?

C’est assez logique comme une définition de fonction. Surtout à la ligne suivante de la définition de fonction, nous pouvons savoir le type de paramètre et la valeur retournée.

Il est possible d’éviter dans ce cas les parenthèses :

Nous voyons que la fonction part des nombres entiers et va dans les nombres entiers. Ça veut dire qu’on peut utiliser notre fonction dans d’autres calculs, comme:

La fonction fait (3*2+1)*2=14, ce qui est différent de f (3*2) qui donne 13.

Maintenant vous savez comment communiquer avec moi et nous pouvons travailler ensemble !

Q : Tout à fait ! Merci à Caml ! J’espère que grâce à ce petit entretien, vous avez eu des connaissances sur ce langage: il est facile à comprendre, il est puissant et il permet de sécuriser le code avec le style fonctionnel. C’est à vous de jouer et pratiquer maintenant !

Bibliographie:

https://openclassrooms.com/courses/apprenez-a-programmer-en-caml

https://caml.inria.fr/distrib/books/llc.pdf

--

--