
Lisp (históricamente LISP) es una familia de lenguajes
de programación de computadora de tipo multiparadigma con larga historia y una
inconfundible y útil sintaxis basada en la notación polaca.
Desarrollado originalmente en 1958 por John McCarthy y
sus colaboradores en el Instituto Tecnológico de Massachusetts, Lisp es el
segundo lenguaje de programación de alto nivel de mayor antigüedad entre los
que continúan teniendo un uso extendido en la actualidad; únicamente FORTRAN es
anterior.
Al igual que el FORTRAN, Lisp ha cambiado mucho desde
sus comienzos, y han existido un gran número de dialectos en su historia. Hoy,
los dialectos Lisp de propósito general más ampliamente conocidos son Common
Lisp y Scheme.
Lisp fue creado originalmente como una notación
matemática práctica para los programas de computadora, basada en el cálculo
lambda de Alonzo Church. Se convirtió rápidamente en el lenguaje de
programación favorito en la investigación de la inteligencia artificial (AI).
Como lenguajes de programación precursor, Lisp fue pionero en muchas ideas en
ciencias de la computación, incluyendo las estructuras de datos de árbol, el
manejo de almacenamiento automático, tipos dinámicos, y el compilador auto
contenido.
El acrónimo LISP significa "LISt Processor"
(Procesamiento de listas). Las listas encadenadas son una de las estructuras de
datos importantes de Lisp, y el código fuente de Lisp en sí mismo está
compuesto de listas. Como resultado, los programas de Lisp pueden manipular el
código fuente como una estructura de datos, dando lugar a los macro sistemas
que permiten a los programadores crear lenguajes de dominio específico
embebidos en Lisp.
La intercambiabilidad del código y los datos también
da a Lisp su instantáneamente reconocible sintaxis. Todo el código del programa
es escrito como expresiones S, o listas entre paréntesis. Una llamada de
función o una forma sintáctica es escrita como una lista, con la función o el
nombre del operador en primer lugar, y los argumentos a continuación; por
ejemplo, una función f que toma tres argumentos puede ser llamada usando (f x y
z).
Historia
Lisp fue inventado por John McCarthy en 1958 mientras
estaba en el Instituto Tecnológico de Massachusetts (MIT). McCarthy publicó su
diseño en 1960 en un artículo de Communications of the ACM titulado
"Funciones recursivas de expresiones simbólicas y su cómputo a máquina,
Parte I"1 (la "parte II" nunca fue publicada). Allí mostró que
con algunos operadores simples y una notación para las funciones, uno puede
construir un lenguaje Turing completo para procesamiento de algoritmos.
Desde 1955 ó 1956, el Information Processing Language
fue el primer lenguaje de AI, y ya había incluido muchos de los conceptos,
tales como proceso por lista y recursión, que vinieron a ser usados en Lisp.
La notación original de McCarthy usaba
"expresiones M" en corchetes que serían traducidas a expresiones S.
Como un ejemplo, la expresión M car[cons[A,B]] es equivalente a la expresión S
(car (cons A B)). Una vez que Lisp fue implementado, los programadores
rápidamente eligieron usar expresiones S, y las expresiones M fueron abandonadas.
las expresiones M emergieron otra vez con los intentos efímeros del MLISP2 de
Horace Enea y el CGOL de Vaughan Pratt.
Lisp fue implementado primero por Steve Russell en un
computador IBM 704. Russell había leído el artículo de McCarthy, y se dio cuenta
(para la sorpresa de McCarthy) que la función eval de Lisp podía ser
implementada en código de máquina. El resultado fue un intérprete de Lisp
funcional que podía ser usado para correr programas Lisp, o más correctamente,
"evaluar expresiones Lisp".
Dos rutinas de lenguaje ensamblador para el IBM 704 se
convirtieron en las operaciones primitivas para descomponer listas: car
(contenido del registro de dirección) y cdr (contenido del registro del
decremento). Los dialectos de Lisp todavía usan el car y cdr (pronunciado /ˈkɑr/
y /ˈkʊdər/) para las operaciones que retornan el primer elemento y el resto de
la lista respectivamente.
El primer compilador completo de Lisp, escrito en
Lisp, fue implementado en 1962 por Tim Hart y Mike Levin en el MIT.3 Este
compilador introdujo el modelo Lisp de compilación incremental, en el cual las
funciones compiladas e interpretadas pueden entremezclarse libremente. El
lenguaje en los memos de Hart y Levin es mucho más cercano al estilo moderno de
Lisp que el anterior código de McCarthy.
No hay comentarios.:
Publicar un comentario