PDF de programación - Un lenguaje de casi 50 años de historia - Lisp (I)

Imágen de pdf Un lenguaje de casi 50 años de historia -  Lisp (I)

Un lenguaje de casi 50 años de historia - Lisp (I)gráfica de visualizaciones

Publicado el 14 de Enero del 2017
2.842 visualizaciones desde el 14 de Enero del 2017
304,3 KB
4 paginas
Creado hace 15a (15/11/2005)
46-49 lisp.qxd 17/10/05 12:42 Página 46

Ciencia e investigación

Un lenguaje de casi 50 años de historia

LLiisspp ((II))
LLiisspp ((II))

David Arroyo Menéndez, José E. Marchesi

Lisp es una familia de lenguajes de
programación con una larga historia.
Desarrollado originalmente como una
implementación de un modelo
computacional, rápidamente se
convirtió en el lenguaje favorito para
hacer investigación en el ámbito de la
inteligencia artificial.

Lisp ha sido pionero en el uso de estructuras de árbol
(S-Expressions), recolección de basura, intérpretes y
programación funcional. Hoy dialectos Lisp son usa-
dos en muchos campos, desde el desarrollo web a las

Tabla 1.
Número de resultados en Google en agosto de 2005
BBúússqquueeddaa
“programming language” java
“programming language” c -c++
“programming language” c++
“programming language” perl
“programming language” python
“programming language” shell
“programming language” lisp
“programming language” ruby
“programming language” tcl

NNúúmmeerroo ddee rreessuullttaaddooss
3.360.000
2.790.000
2.020.000
1.010.000
881.000
568.000
573.000
292.000
249.000

Tabla 2. Relación de lenguajes y número de proyectos
en Sourceforge en agosto de 2005
LLeenngguuaajjee
C++
Java
C
Perl
Python+Zope
C#
Unix Shell
Tcl
Ruby
Scheme
Common Lisp
Emacs Lisp

NNúúmmeerroo ddee pprrooyyeeccttooss
16.111
15.849
15.396
6.039
4.409
2.646
1.767
892
365
195
18
9

finanzas, y también en la educación en ingeniería
informática y, por supuesto, en investigación.

El nombre Lisp viene de “Procesamiento de Listas”.
La estructura de datos de listas y las primitivas para
manejarlas son el denominador común de todos los
dialectos Lisp, como ya explicaremos más adelante.
Otras características comunes de los dialectos Lisp
incluyen el tipado dinámico, el soporte a la progra-
mación funcional y la habilidad para manejar códi-
go fuente como datos.

Los lenguajes Lisp tienen una apariencia rápida-
mente reconocible. El código del programa es escri-
to usando la misma sintaxis de listas: la sintaxis de
S-expressions. Cada subexpresión en un programa
(o estructura de datos) está rodeada con paréntesis.
Esto hace que los lenguajes Lisp sean fáciles de par-
sear y también de metaprogramar, esto es, crear pro-
gramas que escriben otros programas. Esta es la
mayor razón para su gran popularidad en los años
70 y 80; los programadores de inteligencia artificial
creyeron que esta característica de Lisp resolvería
fácilmente grandes problemas de la IA.

Lisp se especificó en 1958, convirtiéndose en el
segundo lenguaje de programación de alto nivel que
se usa hoy; solo Fortran es más viejo. Al igual que
Fortran, Lisp ha cambiado bastante desde sus prime-
ros día y numerosos dialectos han existido a través
de su historia. Hoy, los dialectos Lisp más usados
para programar son Common Lisp y Scheme.
Historia de Lisp

Information Processing Language (IPL) fue el primer
lenguaje de Inteligencia Artificial (IA), desde 1955 o
1956, y ya incluía muchos de los conceptos, tales
como procesamiento de listas y facilidades para la
recursividad, que fueron usadas en Lisp.

Lisp fue inventado por John McCarthy en 1958
mientras él estaba en el MIT. McCarthy publicó su
diseño en un artículo de Comunicaciones del ACM
en 1960, titulado “Recursive Functions of Symbolic
Expressions and Their Computation by Machine, Part
I” (Funciones Recursivas de Expresiones Simbólicas y
su Computación por Máquinas, Parte I). Curiosa-
mente la segunda parte nunca fue publicada. Él
mostraba que con unos pocos simples operadores y
una notación para funciones, se puede construir un
lenguaje de programación completo.

La notación original usada por McCartyhy estaba
basada en “M-expressions”. Esta fue rápidamente
abandonada en favor de las S-expressions que él

MMUUNNDDOO

Linux

nnºº8844

46

http://digital.revistasprofesionales.com

46-49 lisp.qxd 17/10/05 12:42 Página 47

Lisp (I)

Se puede automatizar trabajo en
The Gimp gracias a scripts en Scheme Lisp.

originalmente propuso como una representa-
ción interna. Por ejemplo, la M-expresssion
car[cons[A,B]] es equivalente a la S-expression
(car (cons A B)).

Lisp fue originalmente implementado por
Steve Russell en un ordenador IBM 704 y los
dos lenguajes de macros para esta máquina
llegaron a ser las operaciones primitivas para
descomposición de listas: car (Contents of
Address Register) y cdr
(Contents of
Decrement Register). Los dialectos Lisp todavía
usan car y cdr para las operaciones que
devuelven el primer ítem de una lista y el resto
de la misma respectivamente.

El primer compilador de Lisp completo y
escrito en Lisp fue implementado en 1962
por Tim Hart y Mike Levin. (AI Memo 39, 767
kB PDF
(ftp://publications.ai.mit.edu/ai-
publications/pdf/AIM-039.pdf)). Este compi-
lador ya introducía el modelo Lisp de compi-
lación incremental, en el que las funciones
compiladas e interpretadas pueden mezclar-
se libremente.

Desde su concepción, Lisp estaba estrecha-
mente conectado con la comunidad investiga-
dora en inteligencia artificial. En los años 70,
se empieza a comercializar la IA y el rendi-
miento de los sistemas Lisp existentes llega a
cuestionarse seriamente, en parte debido a
utilizar un recolector de basura y en parte por-
que, en su representación de estructuras
internas, Lisp llega ser difícil de arrancar en el
limitado hardware de almacenamiento de
memoria de aquellos tiempos. Esto motiva la
creación de máquinas LISP: hardware de pro-
pósito específico para arrancar entornos Lisp y

programas. Las técnicas de construcción de
compiladores modernos y las gigantescas
capacidades de los computadores de hoy en
día han hecho esta especialización hardware
innecesaria y hoy disfrutamos de entornos
Lisp mucho más eficientes que otros lengua-
jes más populares.

Entre 1980 y 1990, se hace un gran esfuer-
zo para unificar los numerosos dialectos Lisp
dentro de un lenguaje simple. El nuevo len-
guaje, liderado por Guy Steele, se llamaría
Common Lisp y era esencialmente un super-
conjunto de los dialectos reemplazados. En
1994, ANSI publicaba el estándar Common
Lisp,
Information
Technology Programming Language Common
Lisp”. En esos momentos el mercado que había
entorno a Lisp ya era bastante pequeño, com-
parado con el de unos años atrás.

“ANSI X3.226-1994

Mientras eso ocurría Richard Stallman
anunció en 1983 el proyecto GNU, para
crear un nuevo sistema operativo libre.

Puesto que lo que tendría que hacer el
90% del tiempo que empleara con la compu-
tadora para llevar a cabo su proyecto sería
editar texto decidió empezar creando un edi-
tor llamado Emacs (editor de macros) y con
Emacs surgió Emacs Lisp, también conocido
como elisp. De este modo, el primer progra-
ma libre fue desarrollado por una comunidad
de programadores Lisp. En 1990 el editor y el
compilador de GNU estaría completos.

En 1986 en el mundo del software privati-
vo surge otro lenguaje específico de la aplica-
ción: AutoLisp (renombrado posteriormente
como VisualLisp), un lenguaje para extender
AutoCAD (un programa verdaderamente
extendido en ingeniería y arquitectura) y que
ha generado mucho código Lisp.

En 1995 en GNU están pensando en hacer
aplicaciones para el escritorio y les gustaría
tener un lenguaje de programación para
poder escribirlas de un modo fácil y extensible
como en el editor de gnu, es decir, GNU
Emacs. En ese momento TCL está sirviendo
muy bien para ese propósito. A Richard
Stallman no le gustó básicamente porque,
aunque hereda algunas ideas de Lisp, TCL no
es Lisp y decidieron crear Scheme, el lenguaje
de extensibilidad estándar para GNU.

No se eligió Common Lisp porque parecía
bastante largo y prefirieron algo más sencillo.
La idea era tener un intérprete de Scheme
diseñado para ser enlazado dentro de aplica-
ciones tal y como TCL lo hacía. El principal
beneficio de utilizar Scheme como lenguaje de
extensión primario sería porque debido a la
sintaxis de Lisp es fácil traducir código Lisp a
TCL, pero a la inversa no. Esto es debido a la
idea de S-Expression de Lisp, una idea recien-
temente reinventada con XML. Actualmente,

Ciencia e investigación

Lisp no es tan usado como otros lenguajes; sin
embargo, constituye una pieza fundamental
para entender la historia de la informática y
gente bastante inteligente sigue escribiendo
código Lisp.
Lisp como lenguaje de extensión

Lisp ha sido usado múltiples veces como len-
guaje de extensión. Los ejemplos más popu-
lares en la informática han sido Emacs y
AutoCAD, pero no han sido los únicos: gimp,
gnucash, texmacs son aplicaciones intere-
santes para las que nos será útil haber apren-
dido lisp.

La primera comunidad que se generó alre-
dedor de software libre se generó alrededor
de Emacs y el primer proyecto de GNU fue
GNU Emacs. No es un proyecto cualquiera, es
un proyecto importante. Tened en cuenta
que más del 90% de lo que hacemos cuando
estamos delante del ordenador es editar
texto, así es que la herramienta con la que
hacerlo tiene que ser cómoda.

Cuando Stallman creó el proyecto GNU se le
pasó por la cabeza hacerlo todo con Lisp, pero
por razones de eficiencia y dada la velocidad de
las máquinas de aquel entonces se decantó por
hacer las herramientas de bajo nivel en C. A
pesar de eso en GNU habría Lisp, y así fue.

Emacs tiene un pequeño núcleo escrito en
C; no obstante, todos los modos están escritos
en Lisp y así cambiar el comportamiento de
cualquier cosa que estés haciendo en Emacs
significa evaluar Lisp, lo cual se hace de una
manera tan natural e integrada con el editor
que a veces es incluso usando el ratón.

De este modo, se pueden crear abreviaturas
para supercalifragilísticoespialidoso que es
una palabra larga que por una serie de razo-
nes vas a t
  • Links de descarga
http://lwp-l.com/pdf27

Comentarios de: Un lenguaje de casi 50 años de historia - Lisp (I) (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad