domingo, 31 de octubre de 2010

Lenguajes funcionales LISP y Scheme

LISP

Primero que nada, les hablaré acerca del lenguaje LISP el cual es uno de los lenguajes más antiguos de alto nivel. Este lenguaje se desarrolló alrededor de 1958 por John McCarthy, surgió a partir de un lenguaje lógico llamado lambda calculus. Existen diferentes dialectos del lenguaje LISP entre ellos Scheme, T, entre otros. LISP se utilizó en el campo de inteligencia artificial y aún se sigue utilizando.

En los 80's se trató de estandarizar este lenguaje y como resultado apareció el Common LISP el cual es el dialecto más difundido actualmente, así como la base para desarrollar diversas implementaciones.

El nombre de LISP se deriva de "List Processing" ya que las listas son una de las estructuras de datos importantes de LISP y el código fuente de LISP está compuesto de listas.

Características
- Posibilidad de que las funciones puedan ser datos también.
- Las funciones o programas pueden utilizarse como entrada a otros programas o subrutinas
- Maneja la memoria automáticamente liberando espacio de objetos que ya no se utilizan
- Procesamiento de listas
- Utiliza la misma estructura para datos y codigo
- + / * son nombres de funciones en LISP

En LISP los objetos se llaman S-expresions (symbolic expressions). Los objetos se clasifican en átomos que son números, simbolos y cadenas de caracteres y se clasifican también en listas. 

Los símbolos son cadenas de caracteres (que incluyan por lo menos un caracter no númerico) 
Por ejemplo.

HOLA, H2O, A1, DOS_PAL

Los números pueden ser enteros sobre 16 bits y números flotantes sobre 128 bits.


Por ejemplo.

2, -43, 76.90, -2.5
Las cadenas de caracteres es conjunto de caracteres con o sin espacios que comienza y termina con dobles comillas.

Por ejemplo.

"C N 26", "CARMEN"

Las listas es una sucesión ordenada de objetos que pueden estar vacios. Su estructura se conforma de paréntesis que abre, objetos separados por un espacio y un paréntesis que cierra.

Por ejemplo.

(2 c n), (), (x (y (z)))


Scheme

Scheme es un lenguaje funcional y un dialecto de Lisp. Se desarrolló por Guy L. Steele y Gerald Jay Sussman en los 70s. La filosofía de Scheme es reducida a lo escencial, osea minimalista. 

Al igual que en Lisp, en Scheme las listas son la estructura de datos básica del lenguaje, también están los arrays entre sus principales.

Características
- Tiene una sintaxis muy reducida
- Carece de operadores
- Los macros de Scheme se adaptan en cualquioer dominio
- Tiene un sistema de macros que  son más seguros y fáciles de utilizar
- Facilita la programación funcional
- Existe una multitud de implementaciones diferentes, en cada una de estas existen extenciones y bibliotecas propias que hace que no sean compatibles entre sí.
- Algunas funciones tienen nombres de uso común para variables
- Es imposible distinguir el uso de una macro del de una función

Nota. Una macro es una serie de instrucciones que son almacenadas para que se puedan ejecutar secuencialmente a través de una sola llamada.

Bueno esta fue mi entrada de Lisp y de Scheme espero que les haya ayudado en algo. Saludos a todos

1 comentario: