LISP
Retour histoire langages
mise à jour 05-Jan-2003
en construction
histoire de Lisp par John McCarthy lui-même -1996-
Le Lisp a été inventé à la fin des années cinquante par John McCarthy, comme un formalisme mathématique de raisonnement sur certains types d'expressions logiques.Il a été conçu en 1956 dans le cadre de projets d'intelligence artificielle. Lisp est l'acronyme de LISt Processing : dans ce formalisme, les programmes comme les données sont représentés sous la forme de listes. La représentation analogue des programmes et des données est une caractéristique quasi unique parmi les langages de programmation; comme on l'a vu dans le chapitre précédent, cette caractéristique est de la plus haute importance.
Au début des années 60, McCarthy et ses collègues du MIT Computation Center développèrent le premier interpréteur Lisp sur un IBM 704. Dans les années 60, le Lisp servait principalement à des applications non numériques comme la dérivation symbolique, la linguistique et la démonstration de théorèmes; il était avant tout un langage de recherche, et l'aspect performance n'avait que peu d'importance.
A la suite de ses succès dans ces domaines théoriques, les praticiens de l'informatique accordèrent au Lisp un intérêt grandissant. Alors seulement se posa la question des compilateurs Lisp et de leur efficacité.
Quelques fonctions
Atom : la fonction atom renvoie t (equivalent du true) si l'element est un atome
Quote : la fonction quote permet de renvoyer une expression sans l'evaluer. Le retour de (quote 1) est 1, et celui de (quote (1 2 3 4 5)) est (1 2 3 4 5). L'oubli de quote dans ces expressions entraine une erreur car le LISP recherchera une fonction s'appelant 1, et, dans le second cas, prenant 4 parametres. Au lieu d'ecrire quote, on peut aussi utiliser le caractere '.
Eval : la fonction eval fait le contraire de la fonction quote, c'est a dire qu'elle evalue une expression. Cependant, il n'est pas necessaire de l'ecrire au debut de chaque instruction.
Car : (pour Contents of the address part of Register number) renvoie le premier element d'une liste. (car '(5 3 7)) renvoie 5. L'element retourne n'est pas obligatoirement un atome, mais peut etre une liste. Par exemple, (car '((1 2) 3)) renvoie (1 2).
Cdr : renvoie la liste constituee de tous les elements sans le premier. (cdr '(1 2 3 4)) renvoie (2 3 4).
Condensations de car et de cdr : quand plusieurs fonctions car et cdr se suivent, pour simplifier l'expression, on condense les termes. (car (cdr ...)) devient cdar, (cdr (cdr (cdr (car (cdr ...))))) devient cdadddr et ainsi de suite.
Cons : ajoute un element a une liste. (cons '1 '(2 3 4)) renvoie (1 2 3 4).
Append : met deux listes bout a bout. (append '(1) '(2 3 4)) renvoie (1 2 3 4).
Lisp Machines
Symbolics
Lisp 1.5
première version diffusée développée par John McCarthy sur IBM 704 et portée ensuite sur le smachine sdu MIT (IBM et PDP-6/10)
Common Lisp
Common Lisp introduisait le concept de programmation objet.(CLOS Common Lisp Objetc System)
Le Common Lisp possède un grand nombre de types prédéfinis (integer, rational, complex rational, complex integer, short float, single float, double float, long float, complex, ...). De plus y sont disponibles nombre de fonctions arithmétiques (élémentaires,trigonométriques, hyperboliques, logiques, etc.).
Allegro
CMU
LispWorks
Liquid
Macintosh
Symbolics
ANSI Standard établi en décembre 1994 comme X3.226:1994
Standard Lisp
un sous-ensemble de Lisp 1.5 par Anthony Hearn et Martin Griss de l'Université de l'Utah
Franz Lisp
un dialecte de Lisp, basé sur MacLisp écrit en C autour de 1980 à l'Université de Berkeley. Il tourne sous les systèmes UNIX BSD.
Le-Lisp
Le-Lisp est un dialecte de Lisp voisin de Common Lisp. Il a été développé à l'INRIA par Jérôme Chailloux et Emmanuel StJames.
Il est distribué par la société ILOG
Scheme
Scheme fut développé par Gerald J. Sussman et Guy L. Steele Jr.,
LOGO
Il a été conçu par Seymour Papert au MIT