Lisp (históricamente LISP) ye una familia de llinguaxes de programación d'ordenador de tipu multiparadigma con llarga historia y una inconfundible y útil sintaxis basada na notación polaca.

Desenvueltu orixinalmente en 1958 por John McCarthy y los sos collaboradores nel Institutu Teunolóxicu de Massachusetts, Lisp ye'l segundu llinguaxe de programación d'altu nivel de mayor antigüedá ente los que siguen teniendo un usu estendíu na actualidá; namái FORTRAN ye anterior.

Al igual que'l FORTRAN, Lisp camudó enforma dende los sos empiezos, y esistieron un gran númberu de dialeutos na so hestoria. Güei, los dialeutos Lisp de propósitu xeneral más llargamente conocíos son Common Lisp y Scheme.

Lisp foi creáu orixinalmente como una notación matemática práutica pa los programes d'ordenador, basada nel cálculo lambda d'Alonzo Church. Convirtióse rápido nel llinguaxe de programación favoritu na investigación de la intelixencia artificial (AI). Como llinguaxes de programación precursor, Lisp foi pioneru en munches idees en ciencies de la computación, incluyendo les estructures de datos d'árbol, el remano d'almacenamientu automáticu, tipo dinámicos, y el compilador autu conteníu.

El acrónimu LISP significa "LISt Processor" (Procesamientu de llistes). Les llistes encadenaes son una de les estructures de datos importantes de Lisp, y el códigu fuente de Lisp en sí mesmu ta compuestu de llistes. Como resultáu, los programes de Lisp pueden manipoliar el códigu fonte como una estructura de datos, dando llugar a los macro sistemes que dexen a los programadores crear llinguaxes de dominiu específicu enfiñíos en Lisp.

La intercambiabilidad del códigu y los datos tamién da a Lisp el so instantáneamente reconocible sintaxis. Tol códigu del programa ye escritu como espresiones S, o llistes ente paréntesis. Una llamada de función o una forma sintáctica ye escrita como una llista, cola función o'l nome del operador de primeres, y los argumentos de siguío; por casu, una función f que toma tres argumentos puede ser llamada usando (f x y z).

Historia

Lisp foi inventáu por John McCarthy en 1958 mientres taba nel Institutu Teunolóxicu de Massachusetts (MIT). McCarthy publicó'l so diseñu en 1960 nun artículu de Communications of the ACM tituláu "Funciones recursivas d'espresiones simbóliques y el so cómputu a máquina, Parte I" (la "parte II" nunca foi publicada). Ellí amosó que con dellos operadores simples y una notación pa les funciones, unu puede construyir un llinguaxe Turing completu pa procesamientu d'algoritmos.

Dende 1955 ó 1956, el Information Processing Language foi'l primer llinguaxe de AI, y yá incluyera munchos de los conceutos, tales como procesu per llista y recursión, que vinieron ser usaos en Lisp.

La notación orixinal de McCarthy usaba "espresiones M" en corchetes que seríen traducíes a espresiones S. Como un exemplu, la espresión M car[cons[A,B]] ye equivalente a la espresión S (car (cons A B)). Una vegada que Lisp foi implementáu, el programadores rápido escoyeron usar espresiones S, y les espresiones M fueron abandonaes. les espresiones M remanecieron otra vegada colos intentos efímeros del MLISP de Horace Enea y el CGOL de Vaughan Pratt.

Lisp foi implementáu primero por Steve Russel nun ordenador IBM 704. Russell lleera l'artículu de McCarthy, y diose cuenta (pa la sorpresa de McCarthy) que la función eval de Lisp podía ser implementada en códigu de máquina. El resultáu foi un intérprete de Lisp funcional que podía ser usáu pa correr programes Lisp, o más correutamente, "evaluar espresiones Lisp".

Dos rutines de llinguaxe ensamblador pal IBM 704 convertir nes operaciones primitives pa descomponer llistes: car (conteníu del rexistru de direición) y cdr (conteníu del rexistru del decremento). Los dialeutos de Lisp inda usen el car y cdr ( y ) pa les operaciones que retornen el primer elementu y el restu de la llista respeutivamente.

El primer compilador completu de Lisp, escritu en Lisp, foi implementáu en 1962 por Tim Hart y Mike Levin nel MIT. Esti compilador introdució'l modelu Lisp de compilación incremental, nel cual les funciones compiladas ya interpretaes pueden entemecese llibremente. El llinguaxe nos avantos de Hart y Levin ye muncho más cercanu al estilu modernu de Lisp que l'anterior códigu de McCarthy.

Xenealoxía y variantes

Sobre la so hestoria de cincuenta años, Lisp produció munches variaciones na tema base d'un llinguaxe d'espresión S. Per otra parte, cada dialeutu dau puede tener delles implementaciones, por casu, hai más d'una docena de implementaciones del Common Lisp.

Les diferencies ente los dialeutos pueden ser bien visibles, por casu, el Common Lisp y el Scheme usen distintes pallabres clave pa definir funciones. Dientro d'un dialeutu que ta estandarizado, sicasí, les implementaciones conformaes soporten el mesmu llinguaxe base, pero con distintes estensiones y biblioteques.

Rellación cola intelixencia artificial

Dende'l so entamu, Lisp taba estrechamente rellacionáu cola comunidá d'investigación de la intelixencia artificial, especialmente en sistemes PDP-10.The 36-bit word size of the PDP-6/PDP-10 was influenced by the usefulness of having two Lisp 18-bit pointers in a single word. Foi usáu como la implementación del llinguaxe de programación Micro Planner que foi la fundación pal famosu sistema de AI SHRDLU. Nos años 1970, a midida que la investigación del AI nició descendientes comerciales, el desempeñu de los sistemes Lisp esistentes convertir nun problema creciente.

Lisp yera un sistema difícil d'implementar coles téuniques de compilador y hardware común de los años 1970. Les rutines de recoyida de basura, desenvueltes pol entós estudiante graduáu del MIT, Daniel Edwards, fixeron práuticu correr Lisp en sistemes de computación de propósitu xeneral, pero la eficacia inda siguía siendo un problema. Esto llevó a la creación de les máquines Lisp: hardware dedicáu pa correr ambientes y programes Lisp. Meyores tantu nel hardware d'ordenador como na teunoloxía de compiladores llueu fixeron obsoletas a les máquines de Lisp, en desterciu del mercáu de Lisp.

Mientres los años 1980 y 1990, foi fechu un gran esfuerciu pa unificar los numberosos dialeutos de Lisp nun solu llinguaxe (más notablemente, InterLisp, Maclisp, ZetaLisp, MetaLisp, y Franz Lisp). El nuevu llinguaxe, Common Lisp, foi esencialmente un subconxuntu compatible de los dialeutos que reemplazó. En 1994, l'ANSI publicó l'estándar del Common Lisp, "ANSI X3.226-1994 Information Technology Programming Language Common Lisp". Naquel momentu'l mercáu mundial pa Lisp yera muncho más pequeñu de lo que ye güei.

Dende l'añu 2000

Tornando daqué nos años 1990, Lisp esperimentó una nueva crecedera d'interés. La mayor parte de la nueva actividá ta enfocada alredor de les implementaciones de fonte abierta del Common Lisp, ya inclúi el desenvolvimientu aplicaciones y de nueves biblioteques portátiles. Esti interés puede ser midíu en parte poles ventes de la versión impresa de Practical Common Lisp (Common Lisp Práuticu) de Peter Seibel, un tutorial pa nuevos programadores Lisp publicáu en 2004, que tuvo de volao n'Amazon.com como'l segundu llibru de programación más popular. El llibru ye accesible en llinia ensin costu.Practical Common Lisp

Munchos nuevos programadores Lisp fueron inspiraos por escritores como Paul Graham y Eric S. Raymond lluchando por un llinguaxe qu'otros consideren anticuáu. Los nuevos programadores de Lisp frecuentemente describen el llinguaxe como una esperiencia qu'abre los güeyos y una aclamación de ser substancialmente más granible qu'otros llinguaxes. Esti aumentu de conciencia puede ser oldeáu col "iviernu de la intelixencia artificial" y la curtia crecedera de Lisp a mediaos de los 1990.

Na so encuesta de les implementaciones del Common Lisp, Dan Weinreb llista once implementaciones viviegamente calteníes. Scieneer Common Lisp ye una nueva implementación comercial qu'encrució (fork) del CMUCL con un primer llanzamientu en 2002.

La comunidá del códigu llibre creó la nueva infraestructura de soporte: Cliki ye una Wiki que recueye la información rellacionada con Common Lisp, el Common Lisp directory llista recursos, el #lisp ye una canal popular d'IRC (con soporte por un Bot escritu en Lisp), lisppaste soporta la distribución y l'intercambiu y comentariu de retazos de códigu (snippets), el Planet Lisp recueye'l conteníu de dellos blogues rellacionaos con Lisp, nel LispForum l'usuariu alderica tópicos sobre Lisp, Lispjobs ye un serviciu p'anunciar ufiertes de trabayu y hai un nuevu serviciu de noticies selmanales (Weekly Lisp News).

Fueron celebraos los 50 años del Lisp (1958-2008) en LISP50@OOPSLA. Hai delles xuntes d'usuariu locales regulares (Boston, Vancouver, Hamburg,…), Xuntes Lisp (European Common Lisp Meeting, European Lisp Symposium) y una International Lisp Conference.

La comunidá Scheme caltién viviegamente más de venti implementaciones. Desenvolviéronse nos últimos años delles significatives nueves implementaciones (Chicken, Gauche, Ikarus, Larceny, Ypsilon). L'estándar de Scheme Revised⁵ Report on the Algorithmic Language Scheme foi llargamente aceptáu na comunidá del Scheme. El procesu Scheme Requests for Implementation creó munches biblioteques y estensiones casi estándares pal Scheme. Les comunidaes d'usuariu de implementaciones individuales del Scheme siguen creciendo. En 2003 un nuevu procesu d'estandarización del llinguaxe foi empezada y condució al estándar R⁶RS del Scheme en 2007. L'usu académicu del Scheme pa enseñar ciencies de la computación paez tornar daqué. Delles universidaes yá nun tán usando Scheme nos sos cursos preliminares de ciencies de la computación.

Hai tamién dellos nuevos dialeutos Lisp. Notablemente: Newlisp (un llinguaxe de scripting), Arc (desenvueltu por Paul Graham) y apocayá Clojure (desenvueltu por Rich Hickey) y NU pa la programación con Cocoa d'Apple.

Dialeutos importantes

Los dos principales dialeutos de Lisp usaos pa la programación de propósitos xenerales anguaño son Common Lisp y Scheme. Estos llinguaxes representen opciones de diseñu significativamente distintos.

El Common Lisp, descendiente principalmente de MacLisp, Interlisp, y Lisp Machine Lisp, ye un superconjunto ampliáu de los primeros dialeutos del Lisp, con un estándar de llinguaxe grande incluyendo munchos tipos de datos y formes sintáctiques incorporaos, según un sistema del oxetu. El Scheme ye un diseñu más minimalista, con un muncho más pequeñu conxuntu de carauterístiques estándar pero con ciertes carauterístiques de implementación (tales como optimización de llamada de cola y continuación completa) non atopaes necesariamente en Common Lisp. El Common Lisp tamién tomó emprestaes ciertes carauterístiques de Scheme tales como ámbitu de léxicu y clausura léxica.

El Scheme, ye un dialeutu del llinguaxe Lisp con ámbitu estáticu y cola recursiva auténtica inventáu por Guy Lewis Steele Jr. y Gerald Jay Sussman. Foi diseñáu pa tener una semántica escepcionalmente clara y simple y poques maneres distintes de formar espresiones. Una amplia variedá de paradigmes programaos atopen una espresión conveniente en Scheme, incluyendo los estilos imperativu, funcional, y pasu de mensaxes. El Scheme sigue evolucionando con una serie de los estándares (Revisedn Report on the Algorithmic Language Scheme) y una serie de Scheme Requests for Implementation.

Amás, los dialeutos de Lisp son usaos como llinguaxes de scripting nun númberu d'aplicaciones, colos más conocíos siendo'l Emacs Lisp nel editor d'Emacs, Visual Lisp n'AutoCAD, Nyquist n'Audacity.

Innovaciones del llinguaxe