LES RACINES DE LISP
OriginalMai 2001
(J'ai écrit cet article pour m'aider à comprendre exactement ce que McCarthy a découvert. Vous n'avez pas besoin de connaître ces choses pour programmer en Lisp, mais cela devrait être utile à quiconque souhaite comprendre l'essence de Lisp — tant dans le sens de ses origines que de son noyau sémantique. Le fait qu'il ait un tel noyau est l'une des caractéristiques distinctives de Lisp, et la raison pour laquelle, contrairement à d'autres langages, Lisp a des dialectes.)
En 1960, John McCarthy a publié un article remarquable dans lequel il a fait pour la programmation quelque chose de similaire à ce qu'Euclide a fait pour la géométrie. Il a montré comment, avec une poignée de simples opérateurs et une notation pour les fonctions, on peut construire un langage de programmation entier. Il a appelé ce langage Lisp, pour "Traitement de Liste", car l'une de ses idées clés était d'utiliser une simple structure de données appelée liste pour à la fois le code et les données.
Il vaut la peine de comprendre ce que McCarthy a découvert, non seulement comme un jalon dans l'histoire des ordinateurs, mais comme un modèle de ce que la programmation tend à devenir dans notre propre époque. Il me semble qu'il y a eu deux modèles de programmation vraiment clairs et cohérents jusqu'à présent : le modèle C et le modèle Lisp. Ces deux modèles semblent être des points élevés, avec des bas-fonds marécageux entre eux. À mesure que les ordinateurs sont devenus plus puissants, les nouveaux langages en cours de développement ont progressé constamment vers le modèle Lisp. Une recette populaire pour les nouveaux langages de programmation au cours des 20 dernières années a été de prendre le modèle C de l'informatique et d'y ajouter, au fur et à mesure, des parties tirées du modèle Lisp, comme le typage à l'exécution et la collecte des ordures.
Dans cet article, je vais essayer d'expliquer en des termes aussi simples que possible ce que McCarthy a découvert. L'objectif n'est pas seulement d'apprendre un résultat théorique intéressant que quelqu'un a découvert il y a quarante ans, mais de montrer où les langages sont en train d'aller. La chose inhabituelle à propos de Lisp — en fait, la qualité définissante de Lisp — est qu'il peut être écrit en lui-même. Pour comprendre ce que McCarthy voulait dire par cela, nous allons retracer ses étapes, avec sa notation mathématique traduit en code Common Lisp fonctionnel.