Lenguaje Lisp

14

description

Hola amigos, esta es una presentación que da a conocer algunas de las bondades del lenguaje Lisp, un lenguaje muy poco conocido, pero espero que a alguien le ayude este material.

Transcript of Lenguaje Lisp

Page 1: Lenguaje Lisp
Page 2: Lenguaje Lisp

Alrededor de 1956 McCarthy entendió el papel central de un lenguaje de

programación para su objetivo científico - la inteligencia artificial.

Un trabajo consultor en 1957 le permitió experimentar con una combinación de

notación algebraica (como esto es usado en el lenguaje FORTRAN para describir el

cómputo aritmético).

El experimento era acertado y la idea se hizo para él una base de pensamiento.

Él analizó lenguajes de programación existentes más profundamente (usando el

lenguaje FORTRAN como el modelo) y comenzó a pedir el nuevo medio de expresión.

Antes de septiembre de 1958, McCarthy había propuesto crear una nueva Lengua

Internacional Algorítmica

Page 3: Lenguaje Lisp

Características Interactivo (usualmente)

Los datos en LISP son muy restringidos:

Átomos literales (símbolos)

Átomos numéricos

La estructura de datos básica es la lista. Incluye primitivas para su

manipulación.

Los comentarios comienzan por ‘;’

Los parámetros de función van todos por valor o por referencia según la

clasificación de la función.

LISP es interpretado y usa una estructura de gestión de almacenamiento en

montículo con recolección de basura como almacenamiento primario para datos

y programas.

Page 4: Lenguaje Lisp

Estructura/Objetos de datos

Tipos de datos primitivos: átomos. Cada átomo tiene una lista de

propiedades asociada, accesible a través del puntero que almacena el nombre

del átomo.

No se distinguen may-min para identificadores.

Tipos de datos estructurado: listas. Tienen asociado un puntero al primer

elemento (car) y otro al elemento siguiente (cdr). Una lista vacía apunta a nil.

Para la asignación se utiliza setq(x val). Representación y almacenamiento.

Cada descriptor de un objeto de datos proporciona tipo y atributos.

En los datos estructurados (listas) se tienen sólo punteros a primero y a

siguiente.

Page 5: Lenguaje Lisp

El traductor LISP es una función read() que toma el fuente del fichero y lo interpreta.

La ejecución del programa consiste en la evaluación de las funciones contenidas en

el mismo.

Operaciones sobre átomos (en preorden): +, -, *, /

Operaciones sobre listas: cons, car, cdr, list, replace, null, equal.

Entrada y salida: open(), read(), print().

Definición de funciones: defun, define.

Estructura/Control de secuencia

Page 6: Lenguaje Lisp

• Tres clases de funciones:

1. Función interpretada, en forma de estructura de listas. Primitivas

eval y apply.

2. Función compilada, compiladas en un bloque de código máquina

que puede ser ejecutado por el interprete del hardware.

3. Macro, se declara con define. Es simplemente una función

ordinaria en LISP. Puede ser interpretada y compilada.

Estructura/ Gestión de subprogramas

Page 7: Lenguaje Lisp

o La memoria se estructura en forma de montículo, que

maneja unidades de una palabra de tamaño fijo usando

una lista de espacios libres y un recolector de basura.

o Entorno de referencia:

1. Local, es el que se da en las listas, como asociaciones

de átomos relacionados de una determinada manera.

2. Global o común, se consigue mediante asociación de

un átomo con una propiedad del mismo que contiene

un puntero al datos referenciado. Se usa set y setq.

Estructura/Gestión de almacenamiento

Page 8: Lenguaje Lisp

• Paso de parámetros:

1. Transmisión por valor, consiste en evaluar las

expresiones de una lista de parámetros y transmitir los

valores resultantes.

2. Transmisión por nombre, transmitir las expresiones de la

lista de parámetros sin evaluar, y dejar que la función

llamada los evalue usando eval.

Estructura/Gestión de almacenamiento

Page 9: Lenguaje Lisp

Funciones en Lisp

Funciones normales, son las que se suelen incluir en las

implementaciones de LISP

Funciones de lista, para manipulación de listas:

– car L, devuelve el primer elemento de L.

– cdr L, devuelve la cola (lista - primero).

– cons x y, devuelve uan lista formada por x e y.

– list x y z, devuelve la lista (x y z).

– quote x, no se evalúa x.

Page 10: Lenguaje Lisp

• Predicados – atom x, devuelve True si x es un átomo. – numberp x, devuelve True si x es un número. – greaterp x y, devuelve True si x>y. – lessp x y, devuelve True si x<y. – null x, devuelve True si x es nulo. – and x y, devuelve x and y. – or x y, devuelve x or y. – not x, devuelve not x. – eq x y, devuelve True si x=y.

• Funciones aritméticas: – +, -, *, y /. – rem x y, devuelve el módulo x/y (remainder).

Page 11: Lenguaje Lisp

• Funciones de entrada y salida

– load nombrearchivo, lee el archivo a memoria.

– print x, imprime el elemento x.

– open nombrearchivo, abre un archivo y devuelve una puntero al mismo.

– read, lee del terminal un átomo.

– help, proporciona ayuda.

– trace, traza la función.

– bye, termina LISP.

Page 12: Lenguaje Lisp

EJEMPLO DEL LENGUAJE LISP

Page 13: Lenguaje Lisp

EJEMPLO DEL LENGUAJE LISP

Page 14: Lenguaje Lisp

CONCLUSION

LISP ha evolucionado durante más de 30 años y

desarrollado para inteligencia artificial, pero no es

adecuado para aplicaciones convencionales.

Las versiones compiladas son algo más eficientes.

Es un lenguaje muy estricto poco convencional en el

sentido comercial. Se frecuenta mas a lo científico

(Inteligencia Artificial)y se deriva de Fortran y su estructura

se maneja de un lista inicio o final (cabeza cola)