Vous prendrez bien une petite cuillère de LISP ?

L’extraterrestre débarqua en 1958…

Créé par John McCarthy, professeur et chercheur au MIT, le LISP est un langage applicatif de manipulation symbolique d’expressions. Il tient son nom de l’anglais “LISt Processing”, on devine alors facilement que ce langage manipule des listes. En concevant ce langage, le but du chercheur était d’appliquer les théories du λ-calcul du mathématicien Church, ouvrant la voie au paradigme de la programmation fonctionnelle. Après le Fortran, il est le deuxième plus ancien langage de programmation de haut niveau qui reste largement utilisé aujourd’hui. Au fil du temps, il est devenu le langage le plus utilisé au sein de la communauté de l’intelligence artificielle.

L’alien LISP (Logo)

Donc le LISP est un langage ?

En réalité, il n’est pas réellement un langage, mais plutôt une famille de langages de programmation fonctionnelle de haut niveau. Une des spécificités historiques de LISP fût la présence de différents dialectes. Entre les années 1980 et 2000, de grands efforts de normalisation ont été fait afin de les unifier. Même si LISP englobe toujours plusieurs langages, on en parle souvent comme d’un langage particulier afin d’en évoquer le principe général. Les langages LISP les plus utilisés aujourd’hui sont Common Lisp, Scheme et Clojure.

De quoi cet alien est-il capable ?

De nombreux tests de benchmarks ont révélé que le LISP était souvent beaucoup plus performant que d’autres langages de programmation.

Le LISP est parfaitement adapté à tous les problèmes de programmation, son principe et sa syntaxe étant très simple, le programmeur n’épuise pas toute son énergie sur des détails secondaires. Il permet ainsi à des débutants d’accéder rapidement à l’essentiel des grands problèmes.

Une syntaxe enfantine

En général, il est usuel d’écrire les expressions de la façon suivante :

Syntaxe usuelle d’une expression

En LISP la même expression se note :

Syntaxe en LISP de la même expression

Les programmes en LISP utilisent une notation préfixée (ou polonaise). Ils sont composés d’expressions, qui sont soit des atomes (nombres, caractères, symboles, etc.), soit des listes. Les listes sont à leur tour composées d’expressions, placées entre une parenthèse initiale et une parenthèse finale.

Ci-dessous un exemple, en Clojure, d’une fonction qui retourne la valeur maximale d’une liste passée en paramètre.

(defun get-max-value (list)
(let ((ans (first list)))
(do ((i 1 (1+ i)))
((>= i (length list)) ans)
(when (> (nth i list) ans)
(setf ans (nth i list))))))

On reconnaît facilement le langage sans même lire le code grâce à son nombre important de parenthèses. A première vue cette syntaxe pourrait rebuter plus d’un développeur ayant l’habitude de coder avec un langage impératif. Dans les faits l’apprentissage de cette syntaxe est assez simple et comprendre le LISP permet d’aborder la programmation d’une façon différente, ce qui est très enrichissant pour tout bon développeur.

“Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot.”

- Eric S. Raymond, “How to Become a Hacker”

Un brin de concentration et quelques tasses de café suffiront pour vous faire devenir un meilleur programmeur… alors qu’attendez-vous ? ☕

John McCarthy

--

--