Loading...

LES RACINES DE LISP

Original

Mai 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 veut comprendre l'essence de Lisp - à la fois dans le sens de ses origines et 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 comme ce qu'Euclide a fait pour la géométrie. Il a montré comment, avec une poignée d'opérateurs simples et une notation pour les fonctions, on peut construire tout un langage de programmation. 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 pour 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 de nos jours. Il me semble qu'il y a eu deux modèles de programmation vraiment propres et cohérents jusqu'à présent : le modèle C et le modèle Lisp. Ces deux semblent être des points hauts, avec des bas-fonds marécageux entre eux. À mesure que les ordinateurs sont devenus plus puissants, les nouveaux langages développés ont progressé régulièrement 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 de calcul C et d'y ajouter, de manière morcelée, des éléments tirés du modèle Lisp, comme le typage dynamique et la collecte des déchets.

Dans cet article, je vais essayer d'expliquer dans les termes les plus simples possible ce que McCarthy a découvert. Le but 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 se dirigent. 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 entendait par là, nous allons retracer ses pas, avec sa notation mathématique traduite en code Common Lisp courant.