((Vieux comme) (le monde) (mais toujours)(présent))

Antoine Morin
ELP-2018
Published in
4 min readJun 18, 2018

Pour tout ceux qui n’ont pas le monde informatique dans le sang, toutes ces parenthèses dans le titre ont une raison. En effet, dans ce domaine, on représente les listes de cette façon. Bon, je vous l’accorde, ce n’était pas évident et cela ne nous informe pas vraiment. En fait, dans ce titre se cache le thème de cet article, la famille de langage Lisp !

Figure 1 — Logo spécifiant l’utilisation de Lisp comme langage de programmation

Fort bien, on a une déclaration de liste … mais tous les langages possèdent des listes, non ? Comment est ce que j’aurai pu savoir que l’on parlerait de Lisp ?
Il est vrai que tous les langages de programmation utilisent cette structure de donnée, cependant elle n’est que très rarement principe du langage. De plus, la notion d’ancienneté dans le titre aurait pu vous mettre la puce à l’oreille puisque Lisp fut créé en 1958 par John McCarthy. Cette ancienneté lui confère le titre de deuxième plus vieux langage haut niveau encore utilisé aujourd’hui, juste après Fortran.

Comme il s’agit d’un langage ancien, je vous propose à travers cet article de découvrir ce langage, ses principes, son utilisation mais aussi son histoire ainsi que les différents dialectes qu’il a engendré. Nous verrons de plus lesquels de ceux-ci sont toujours utilisés de nos jours et les raisons qui poussent leur utilisation. Avant de discuter des piliers de Lisp, voici une petite citation d’un des pères fondateurs de la programmation orientée objet.

Lisp is the greatest single programming language ever designed — Alan Kay

Chaque langage de programmation dispose de paradigmes, il s’agit de leur conceptualisation du monde de l’informatique. C’est une façon de penser comment le programme devra fonctionner. Par exemple, l’orientée objet est un paradigme. Lisp possède la particularité d’en avoir deux, il s’agit du fonctionnel et de l’impératif. Cela provient du fait qu’il s’agit d’un des pionniers de la programmation fonctionnelle - c’est à dire que tout les symboles sont des fonctions - mais qu’il permet tout de même d’intégrer les concepts de la programmation impérative. Malgré ces paradigmes, on ne sait toujours pas à quoi ressemble un code Lisp …

Figure 2 — Exemple d’un code en Common Lisp

Il est vrai, je vous ai menti, ce n’est pas vraiment du Lisp mais du Common Lisp, dialecte standardisé au début des années 1980. Par contre, je ne vous avais pas menti sur les parenthèses ! Et oui, comme le nom Lisp le laisse présager, la première structure que manipule ce langage est la liste ! On peut aussi voir dans cet exemple le paradigme fonctionnel ainsi que toute sa puissance avec la récursivité, en effet cette fonction factorial s’appelle elle-même. Mais en quoi ce concept de manipulation de liste a permis au langage d’avoir sa place parmi tous ceux utilisés ?

Comme Lisp ne manipule que des listes comme structure de donnée, tous les ensembles du programme (c’est-à-dire expression ou sous-expression) sont notés telle une liste et donc délimité par des parenthèses. Ce sont des S-expressions. Cette façon d’écrire un algorithme en Lisp permet une analyse syntaxique très efficace. Non seulement on gagne du temps et de l’énergie mais on va aussi pouvoir créer des programmes facilement, qui se modifient eux-même ou qui en créent d’autres car la syntaxe est très “pure”. C’est pourquoi Lisp connait un grand succès dans le monde de l’intelligence artificielle (AI) dans les années 1970–1980.

Les années 70, c’est l’âge d’or de Lisp. On peut même avoir des ordinateurs créés spécialement pour l’exécution de programmes Lisp, les machines Lisp. Jusqu’aux années 80, le domaine dans lequel on utilise ce langage, c’est celui de l’AI. Puis de 1980 à 1994, ce sont un bon nombres de dialecte issus de Lisp qui émerge avec leur standardisation. Dans cette période, deux dialectes majoritaires se développent : Scheme et Common Lisp.

Dans les années 90, l’utilisation de Lisp est très limité et il semble d’ailleurs s’éteindre petit à petit. Pourtant, en 2005 dans l’OS Debian, on trouve 3% des lignes de code écrite en Lisp.
Et de nos jours, d’irréductibles développeurs continuent la programmation en Lisp. Cela est dû à un raison simple, les concepts nécessaires à la programmation d’un tel langage sont très formateurs et sont très utiles pour un développeur . En effet, il s’améliore en manipulant ce genre de langage et agrandit sa vision d’esprit. C’est donc grâce aux nouveau concepts qu’il a amené et à sa pureté que Lisp a su être utile et l’est encore aujourd’hui.

Bibliographie :
https://en.wikipedia.org/wiki/Lisp_(programming_language)https://softwareengineering.stackexchange.com/questions/9320/why-is-lisp-useful
http://www.paulgraham.com/iflisp.html
http://www.ai.univ-paris8.fr/~hw/lisp/letout.pdf
https://fr.wikipedia.org/wiki/Lisp

figure1: http://xahlee.info/UnixResource_dir/writ/logo_lisp.html
figure2 : https://fr.wikipedia.org/wiki/Lisp

--

--