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