LES RACINES DU 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 il devrait être utile à quiconque souhaite comprendre l'essence de Lisp — à la fois dans le sens de ses origines et de son noyau sémantique. Le fait qu'il possède un tel noyau est l'une des caractéristiques distinctives de Lisp, et la raison pour laquelle, contrairement à d'autres langages, Lisp possède des dialectes.)
En 1960, John McCarthy a publié un article remarquable dans lequel il a fait pour la programmation quelque chose de ce qu'Euclide a fait pour la géométrie. Il a montré comment, à partir d'une poignée d'opérateurs simples et d'une notation pour les fonctions, on peut construire un langage de programmation complet. Il a appelé ce langage Lisp, pour "List Processing", car l'une de ses idées clés était d'utiliser une structure de données simple appelée liste à la fois pour le code et les données.
Il est intéressant de comprendre ce que McCarthy a découvert, non seulement comme un jalon dans l'histoire des ordinateurs, mais aussi comme un modèle de ce que la programmation tend à devenir à notre époque. Il me semble qu'il existe jusqu'à présent deux modèles de programmation vraiment propres et cohérents : le modèle C et le modèle Lisp. Ces deux modèles semblent être des points élevés, séparés par des plaines marécageuses. À mesure que les ordinateurs sont devenus plus puissants, les nouveaux langages développés ont progressivement évolué 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, petit à petit, des éléments empruntés au modèle Lisp, comme le typage à l'exécution et le ramasse-miettes.
Dans cet article, je vais essayer d'expliquer dans les termes les plus simples possibles ce que McCarthy a découvert. Il ne s'agit pas seulement d'en apprendre davantage sur un résultat théorique intéressant découvert il y a quarante ans, mais de montrer la direction que prennent les langages. La particularité de Lisp (en fait, la qualité qui le définit) est qu'il peut être écrit en lui-même. Pour comprendre ce que McCarthy voulait dire par là, nous allons retracer ses pas, avec sa notation mathématique traduite en code Common Lisp exécutable.