El Llenguatge de Programació LISP

John McCarthy

John McCarthy (1927–2011). The father of Artificial Intelligence. 

LISP és el segon llenguatge de programació de més antiguitat, que es va publicar al MIT després de Fortran i poc abans de COBOL. Creat per a seguir la notació matemàtica del càlcul lambda d’Alonzo Church. Entre altres aportacions, LISP va introduir l’estructura cond, que implementava, ara essencial, l’estructura IF…THEN…ELSE.

LISP va introduir la possibilitat de definir estructures de dades arborescents i els tipus dinàmics de dades. La primera cosa que recorda qualsevol persona que haja utilitzat LISP és la seua sintaxi basada en la notació polonesa i l’ús extensiu de llistes (LISP prové de “LISt Processor”). Les seues característiques fan fàcil el disseny de regles útils per a la definició del comportament en escenaris complexos, que el va fer favorit en el camp de la intel·ligència artificial. Una de les particularitats destacades de LISP és que el codi mateix estiga estructurat en forma de llistes, que siga accessible, i modificable, pel mateix codi.

Peter Seibel LISP Book

Peter Seibel LISP Book online

LISP és un llenguatge habitualment interpretat que, unit al fet que considera la recursió com a estructura de control, fa que no fora molt eficient en les primeres versions. Si bé en els anys 90 va experimentar un cert declivi, a partir del llibre de Peter Seibel (accessible en línia de forma gratuïta) despertà de nou interès, i actualment hi ha una comunitat activa que ofereix recursos i fòrums de discussió. Actualment (2021), Common Lisp i Scheme són les versions més esteses.

Que fora dels primers llenguatges publicats va fer que, òbviament, influïra en molts altres (Smalltalk, ALGOL), si bé l’estructura radical de LISP (que considera el mateix tipus tant per a la definició del codi com per a estructurar les dades) fa que no puguen aconseguir la coherència i sinergia d’aquest.

LISP


Naixement: 1958
Evolució: Common Lisp (1984); ANSI Common Lisp (1994);
Influències de: IPL
Influeix en: ALGOL; Scheme; CLISP; Haskell; JavaScript; Logo; Smalltalk; Perl; Python; R;