Lisp
Lisp(ouLISP) é unha familia de linguaxes de programación cunha longa historia e unha distintiva sintaxe chea de parénteses. Orixinalmente especificado en 1958, o Lisp é a segunda linguaxe de programación de alto nivel máis vella en amplo uso hoxe en día por detrás doFortran.Coma este último, o Lisp cambiou moito dende os seus primeiros días, e son moitos os dialectos que existiron na súa historia. Hoxe, os máis extensamente coñecidos dialectos do Lisp de propósito xeral, son oCommon Lispe oScheme.
Características
[editar|editar a fonte]Lisp foi orixinalmente creado coma unha notación matemática práctica para programas de computadores, baseado nocálculo lambdadeAlonzo Church.Axiña se converteu nalinguaxe de programaciónfavorita para a investigación naintelixencia artificial.Coma unha das primeiras linguaxes de programación, Lisp foi pioneira en moitas ideas na informática, incluíndo as estruturas de datos tipo árbore, xestión automática de almacenaxe, tipado dinámico ou aprogramación orientada a obxectos.
O nome de Lisp deriva de "List Processing" (Proceso de listas). As listas enlazadas son as principais estruturas de datos da linguaxe, e o propiocódigo fonteLisp, en si mesmo, está construído con listas. Coma resultado disto, os programas en Lisp poden manipularcódigo fontecoma unha estrutura de datos, dando lugar a un sistema de macros que permite ós programadores crear novas sintaxes ou incluso novas linguaxes para dominios específicos embebidos no propio Lisp.
A intercambiabilidade de código e dados dálle ademais ó Lisp o instantáneo recoñecemento da súa sintaxe. Todo o código está escrito coma s-expresins (expresións-s), ou listas entre parénteses. Unha chamada a función ou a unha forma sintáctica está escrita coma unha lista co nome da función ou do operador primeiro, e os argumentos a continuación: (f x y z)
A invención do Lisp: 1958-1962
[editar|editar a fonte]O Lisp foi inventado (ou, coma di Paul Graham, "descuberto"[1]) por John McCarthy en 1958 mentres estaba noMIT.McCarthy publicou o seu deseño nunha folla noMagazine Communicatios of the ACMno1960,titulado "Funcións Recursivas Expresións Simbólicas e a súa Computación por Máquinas. Parte I". (A segunda parte nunca foi publicada.) El mostraba que cunhas poucas operacións e unha notación para funcións, calquera pode construír unha linguaxe Turing-completa para algoritmos.
O Lisp foi implementado por primeira vez porSteve Russellnunha computadoraIBM704. Rusell lera o artigo de McCarthy, e deuse conta (para sorpresa de McCarthy) que a funciónevalpodería ser implementada en código máquina. O resultado foi un intérprete de Lisp que podía ser usado para executar programas Lisp ou, máis exactamente, 'avaliar expresións Lisp.'
O primeirocompiladorcompleto de Lisp, escrito en Lisp, foi implementado no1962por Tim Hart e Mike Levin no MIT. (Memo 39[Ligazón morta],767 kB PDF.) Estecompiladorintroduce o modelo Lisp de compilación incremental, no que funcións compiladas e interpretadas poden mesturarse libremente. A linguaxe empregada no memorando de Hart e Levin está moito máis preto do Lisp moderno que do primeiro código de McCarthy.
Xenealoxía e variantes
[editar|editar a fonte]Ó longo dos seus cincuenta anos de historia, o Lisp xerou moitas variacións do seu tema central dunha linguaxe de expresións-S. Ademais, cada dialecto concreto pode ter varias implementacións, por exemplo, hai máis dunha ducia de implementacións deCommon Lisp.
As diferenzas entre dialectos poden ser claramente visibles, por exemplo,Common LispeSchemefan uso de verbas clave distintas para definir funcións. Dentro dun dialecto estandarizado, porén, as implementacións respectan o núcleo da linguaxe, pero con diferentes extensións e bibliotecas.
Conexión coa Intelixencia Artificial
[editar|editar a fonte]Dende a súa concepción, o Lisp estivo estreitamente conectado coa comunidade da investigación enintelixencia artificial,especialmente en sistemasPDP-10.
Lisp era un sistema difícil de implementar coas técnicas dos compiladores e o hardware dos anos 70. As rutinas derecolección de lixo,desenvolvidas por Daniel Edwards]], fixeron práctico executar Lisp en sistemas de computación de propósito xeral, pero a eficiencia era aínda un problema. Isto conduciu á creación dasLisp machines:a medida para a execución de contornas e programas Lisp. Os avances en hardware e en tecnoloxías de compilación pronto fixeron asLisp machinesobsoletas.
Ó longo dos anos 80 e 90 fíxose un grande esforzo para unificar os numerosos dialectos Lisp (os máis notables:InterLisp,MaclispeZetaLisp) nunha única linguaxe. A nova linguaxe, oCommon Lisp,era en esencia un subconxunto dos dialectos que substituía. En 1994, oANSIpublicou o estándarCommon Lisp,"ANSI X3.226-1994 Information Technology Programming Language Common Lisp."
Do 2000 en diante
[editar|editar a fonte]A pesar dun certo declive nos anos 90, o Lisp experimentou un rexurdimento dende o ano 2000. A maior parte da actividade xira ó redor das implementacións desoftware libredoCommon Lisp,e inclúe o desenvolvemento de novas bibliotecas e aplicacións portables. Esta interese pódese medir polas vendas da versión impresa do libroPractical Common LispdePeter Seibel,un titorial para novos programadores Lisp publicado no 2004 que foi durante un breve período o segundo libro de programación máis popular deAmazon.com.Agora pódese atopar en liña gratis[1].
Moitos dos novos programadores Lisp foron inspirados por escritores comaPaul Grahama perseguir linguaxes que outros consideraban anticuadas. Os novos programadores Lisp describen a linguaxe coma unha experiencia abridora de ollos e aseguran ser sensiblemente máis produtivos que con outras linguaxes.
Dialectos modernos maioritarios
[editar|editar a fonte]Os dous dialectos de Lisp máis utilizados en programación de propósito xeral hoxe en día sonCommon LispeScheme.Estas linguaxes representan aproximacións substancialmente diferentes.
Common Lisp,descendente sobre todo deMacLisp,InterLispeLisp Machine Lisp,é unha expansión de dialectos Lisp máis antigos, cun estándar voluminoso que inclúe moitos tipos de datos e formas sintácticas, ademais dun sistema de obxectos.Schemeten un deseño máis minimalista, cun conxunto de características estándar moito máis reducido, pero con características incluídas en certas implementacións non necesariamente incluídas enCommon Lisp.
Ademais, hai dialectos Lisp usados como linguaxes de scripting en diversas aplicacións, sendo os máis coñecidos oEmacs Lispdo editorEmacse oAutoLispdoAutoCAD.