Académique Documents
Professionnel Documents
Culture Documents
se Aprende en 10
Minutos
ndice
Volver a davidam.com
1 Introduccin
Lisp es uno de los lenguajes de programacin ms simples que
existen. Unos pocos conceptos, siete u ocho, abarcan todo el
lenguaje. Hablamos de la especificacin base del lenguaje,
naturalmente. Los distintos dialectos han ido extendiendo el
lenguaje y aadiendo nuevas construcciones. Pero, y esto es
tremendamente importante, lo han hecho siempre utilizando esos
mismos conceptos base. Eso implica que, una vez conocidos los
pocos conceptos que constituyen la base del lenguaje, el lector
ser capaz de interpretar prcticamente cualquier programa Lisp.
Esta circunstancia (ser un lenguaje muy sencillo) permite abarcar
su estudio desde un punto de vista bastante original, y
extremadamente productivo. En el aprendizaje de cualquier otro
lenguaje de propsito general se tiende (muy acertadamente) a
comenzar impartiendo las caractersticas a nivel de lenguaje como
lxico (cmo se escribe una palabra reservada), sintaxis (en qu
consiste una sentencia, o una expresin) y semntica (cmo
evala una expresin aritmtica). Una vez conocidos estos
aspectos del lenguaje, por lo general se pasa a exponer las
caractersticas ms especficas del entorno y, por tanto, de cmo
se traducen las semnticas expresadas en el lenguaje en una
ejecucin (las variables globales en C se inicializan a 0, cosa que
2 Memoria: qu hay?
Como podemos ver en la figura 1, un intrprete Lisp mantiene dos
regiones en memoria, diferenciadas:
(2 . 3.0)
que es es equivalente a:
(setq cuatro-bis (first (rest (rest arbol))))
que es equivalente a:
(setq tres-bis (rest (first (rest arbol))))
(Numero-de-pies . 2)
(Numero-de-ojos . 1.3))
3 Ejecucin: qu hace?
Y vamos ya con la segunda parte de este mini-curso. Ya sabemos
lo que el intrprete de Lisp almacena en memoria, y cmo lo
almacena. En concreto, puede almacenar nmeros, cadenas de
caracteres, estructuras de pares (incluyendo las listas), etc. Sin
embargo, nos falta por ver cmo funciona el intrprete, es decir,
cul es el mecanismo por el que se le ofrece un texto con un
programa Lisp y ste lo ejecuta.
Comencemos por una idea importante: conceptualmente, el
intrprete ejecuta estructuras de datos presentes en la memoria
de datos. Es decir, que cualquier programa Lisp es expresable en
tipos de datos Lisp. Antes de ello, por supuesto, el intrprete debe
convertir el programa escrito (secuencia de caracteres) en esas
estructuras de datos. As pues, en la exposicin que sigue hay que
tener presente que el Lisp que se expone en notacin escrita est
almacenado en algn lugar de la memoria de datos.
Luego el intrprete es capaz de "ejecutar" o evaluar el contenido
de la memoria de datos Muy bien, pero, cualquier contenido? La
respuesta es s. El intrprete puede evaluar cualquier tomo o
estructura, dependiendo nicamente el resultado de la evaluacin.
Lo primero, lo ms sencillo: tomos numricos. Un tomo numrico
evala simplemente a su valor. Es decir, que el tomo 1 evala a
1, y el tomo 23.3 evala a 23.3. Sin ms. Lo mismo ocurre con las
cadenas de caracteres: "abc" evala a "abc".
Entramos en harina cuando queremos evaluar un par o una lista
(compuesta de pares). El proceso de evaluacin es el siguiente:
1. Se obtiene el "car" (el primer elemento) de la lista y se
evala hasta obtener un valor de funcin.
4 Y ahora qu?
Con esto damos por terminado nuestro mini-curso conceptual
sobre Lisp. Evidentemente, queda mucho por aprender. Pero lo que
podemos garantizar es que los conceptos fundamentales (sobre los
que se construye el resto del lenguaje) el lector ya los tiene
aprendidos. A partir de aqu, la tarea consiste en aprender
5 Licencia
Este documento est bajo una Licencia Creative Commons
Reconocimiento Unported 3.0, se public originalmente en Mundo
Linux 85.