((((( Common Lisp )))))

Dans ce billet, nous allons nous pencher sur le Common Lisp, en nous intéressant notamment à son histoire et à sa syntaxe particulière.

I. La grande famille du Lisp

Avant de parler du Common Lisp, nous allons nous arrêter un instant sur le Lisp, le langage d’origine, pour comprendre pourquoi le Common Lisp est apparu, et ce qu’il a apporté.

Lisp est un langage vieux, né en 1958 et qui s’est distingué des autres par son paradigme fonctionnel et de sa syntaxe particulière.

En soi, le Lisp n’est pas un langage, mais une famille de langages : ainsi, si on veut coder en Lisp, il faut choisir un dialecte. A l’heure actuelle, il en existe plusieurs dizaines, avec chacun ses propres spécificités : d’un dialecte à l’autre, les types de variables, la syntaxe et la philosophie changent. Voici un tableau montrant les différences entre 2 dialectes utilisés de nos jours :

Différences Common Lisp et Scheme, 2 dialectes du Lisp

II. L’arrivée du Common Lisp

Nous venons de le voir, de nombreux dialectes du Lisp existent, tous différents les uns des autres, sans compatibilité entre eux et rendant difficile l’apprentissage d’un nouveau dialecte. C’est là que le Common Lisp intervient.

Le but du Common Lisp, créé en 1981, est de standardiser et unifier tous les dialectes divergents qui l’ont précédé pour que les programmeurs puissent utiliser la même version de Lisp, quel que soit leur projet.

Pour cela, Common Lisp rassemble toutes les librairies de ses prédécesseurs pour devenir un langage unique avec lequel il est possible de développer n’importe quelle application, sans être restreint par les fonctionnalités du langage, chose impossible pour les autres dialectes.

L’autre intérêt du Common Lisp est que, contrairement à certains dialectes qui ne s’exécutent que sur certaines machines ou certains produits (Emacs Lisp qui ne fonctionne que sur l’éditeur de texte Emacs), c’est un langage de programmation à usage général : il est indépendant de la machine sur laquelle il est exécuté.

Etant un dialecte du Lisp, Common Lisp a hérité de ce dernier une caractéristique qui le rend instantanément discernable des autres langages : les parenthèses.

III. Welcome to Parenthèse Land

En voyant le titre de ce billet, on peut se demander pourquoi il y a tant de parenthèses. C’est une référence à sa syntaxe.

La syntaxe de tous les dialectes Lisp, Common Lisp inclus, est particulière : tout le code s’écrit sous forme de liste, comme ceci :

Ainsi, pour écrire du code, voici la syntaxe à utiliser :

Voici quelques exemples simples écrits en Common Lisp :

une somme en Common Lisp

Mais dès que le code commence à devenir plus complexe, le nombre de parenthèses explose !

exemple de fonction simple

Cette manière de coder est différente de ce que l’on retrouve en C, Python, Java, et peut être dans un premier temps perturbant pour un débutant du fonctionnel.

Cette syntaxe particulière, couplée à la prolifération de parenthèses, a été la source de nombreuses plaisanteries:

Extrait du comic “How to save the princess in 8 different programming languages

En conclusion, le Common Lisp et le Lisp sont des langages se distinguant des autres par leur syntaxe et leur paradigme fonctionnel. Peu utilisés par la majorité de la communauté (Lisp est classé seulement 32ème langage le plus utilisé), ils excellent cependant dans les applications ayant besoin d’effectuer des traitements mathématiques complexes, ainsi que dans le développement d’Intelligences Artificielles.

--

--