Lisp: Diferenzas entre revisións

Contido eliminado Contido engadido
Servando2 (conversa | contribucións)
Sen resumo de edición
Servando2 (conversa | contribucións)
arranxiños
Liña 1:
'''Lisp''' (ou '''LISP''') é 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 do [[Fortran]]. 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 o [[Common Lisp]] e o [[Scheme]].
 
'''Lisp''' foi orixinalmente creado coma unha notación matemática práctica para programas de computadores, baseado no [[cáculocálculo lambda]] de [[Alonzo Church]]. Axiña se converteu na [[linguaxe de programación]] favorita para a investigación na [[intelixencia artificial]]. Coma unha das primeiras linguaxes de programación, Lisp foi pioneira en moitas ideas na informática, incluíndo as estructurasestruturas de datos tipo árbore, xestión automática de almacenaxe, tipado dinámico ou a [[programació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 propio [[código fonte]] Lisp, en si mesmo, está construído con listas. Coma resultado disto, os programas en Lisp poden manipular [[código fonte]] coma 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 dalle ademais ó '''Lisp''' o instantaneoinstantáneo recoñecemento da suasú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==
O '''Lisp''' foi inventado (ou, coma di Paul Graham, "descobertodescuberto" [http://www.paulgraham.com/icad.html]) por John McCarthy en 1958
mentrasmentres estaba no [[Massachusetts Institute of Technology|MIT]]. McCarthy publicou o seu deseño nunha folla no ''Magazine Communicatios of the ACM'' no [[1960]], tituadotitulado "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 con unhas poucas operacións e unha notación para funcións, calquera pode
construír unha linguaxe Turing-completa para algoritmos.
Liña 15:
O '''Lisp''' foi implementado por primeira vez por [[Steve Russell]] nunha computadora [[IBM]] 704. Rusell lera o artigo de McCarthy, e deuse conta (para sorpresa de McCarthy) que a función ''eval'' poderí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 primeiro [[compilador]] completo de '''Lisp''', escrito en Lisp, foi implementado no [[1962]] por Tim Hart e Mike Levin no MIT. ([ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-039.pdf|AI Memo 39], 767 kB PDF.) Este [[compilador]] introduce o modelo '''Lisp''' de compilación incremental, no que funcións compiladas e interpretadas poden mezclarsemesturarse libremente. A linguaxe empregada no memorándummemorando de Hart e Levin está moito máis preto do Lisp moderno que do primeiro código de McCarthy.
 
===Xenealoxía e variantes===
Ó longo dos seus cincuenta anos de historia, o Lisp xerou moitas variacións do seu tema central dunha linguaxe de expresións-S. AdemáisAdemais, cada dialecto concreto pode ter varias implementacións, por exemplo, hai máis dunha ducia de implementacións de [[Common Lisp]].
 
As diferencias entre dialectos poden ser claramente visibles, por exemplo, [[Common Lisp]] e [[Scheme]] fan uso de verbas clave distintas para definir funcións. Dentro dun dialecto estandarizado, porén, as implementacións respetanrespectan o núcleo da linguaxe, pero con diferentes extensións e bibliotecas.
 
==Conexión coa Intelixencia Artificial==
Dende a sua concepción, o Lisp estivo estreitamente conectado coa comunidade da investigación en [[intelixencia artificial]], especialmente en sistemas [[PDP-10]].
 
Lisp era un sistema difícil de implementar coas técnicas dos compiladores e o hardware dos anos 70. As rutinas de [[recolecció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 todavíaaínda un problema. Isto conduciu á creación las [[Lisp machine]]s: a medida para a execución de entornos e programas Lisp. Os avances en hardware e en tecnoloxías de compilación pronto fixeron as [[Lisp machine]]s obsoletas.
 
Ó longo dos anos 80 e 90 fíxose un gran esforzo para unificar os numerosos dialectos Lisp (os máis notables: [[InterLisp]], [[Maclisp]] e [[ZetaLisp]]) nunha única linguaxe. A nova linguaxe, o [[Common Lisp]], era en esencia un subconxunto dos dialectos que substituía. En 1994, o [[ANSI]] publicou o estándar [[Common Lisp]], "ANSI X3.226-1994 Information Technology Programming Language Common Lisp."
 
==Do 2000 en diante==
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 de [[Software Libre]] do [[Common Lisp]], e inclúe o desenvolvemento de novas bibliotecas e aplicacións portables. Esta interese pódese medir polas ventas da versión impresa do libro ''[[Practical Common Lisp]]'' de [[Peter Seibel]], un tutorialtitorial para novos programadores Lisp publicado no 2004 que foi durante un breve periodoperíodo o segundo libro de programación máis popular de [[Amazon.com]]. Agora pódese atopar en línealiña gratis<ref>[http://gigamonkeys.com/book/ Practical Common Lisp]</ref>.
 
Moitos dos novos programadores Lisp foron inspirados por escritores coma [[Paul Graham]] a 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 productivosprodutivos que con outras linguaxes.
 
===Dialectos modernos maioritarios===
Os dous dialectos de Lisp máis utilizados en programación de propósito xeral hoxe en día son [[Common Lisp]] e [[Scheme]]. Estas linguaxes representan aproximacións sustancialmentesubstancialmente diferentes.
 
[[Common Lisp]], descendente sobre todo de [[MacLisp]], [[InterLisp]] e [[Lisp 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. [[Scheme]] ten 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 en [[Common Lisp]].
 
AdemásAdemáis, hai dialectos Lisp usados como linguaxes de scripting en diversas aplicacións, sendo os máis conocidoscoñecidos o [[Emacs Lisp]] do editor [[Emacs]] e o [[AutoLisp]] do [[AutoCAD]].
 
[[Categoría:Linguaxes de programación]]