Lenguaje Lisp

2,981 views

Published on

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.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,981
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
94
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lenguaje Lisp

  1. 1. 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
  2. 2. 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.
  3. 3. 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.
  4. 4. 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
  5. 5. • 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
  6. 6. 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
  7. 7. • 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
  8. 8. 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.
  9. 9. • 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).
  10. 10. • 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.
  11. 11. EJEMPLO DEL LENGUAJE LISP
  12. 12. EJEMPLO DEL LENGUAJE LISP
  13. 13. 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)

×