domingo, 8 de mayo de 2011

Lenguaje Lisp, para IA

Uno de los lenguajes mas antiguos que permiten realizar algo de IA, es el Lisp, este curioso lenguaje de programacion esta echo a base de listas, es por eso que aqui es muy importante los signos "(" que lo vamos a usar muchas veces, generalmente este lenguaje es un poco complejo, y no tanto por su dificultad de comandos y funciones que presenta, sino por los "("s que debemos tener cuidado en abrir y cerrar.

Asi que podemos tener una lista de numeros como: (1 2 -3 4)
Listas de letras o palabras: (a hola c good nice)

En lisp se hacen operaciones sobre estas listas asi que en realidad si quicieramos operar numeros, lo que haremos sera en realidad operar listas unitarias, asi:
(1) + (2) = (3), en lisp la solucion me daria otra lista unitaria. Generalmente se opera en listas, aunque tambien se opera numeros directamente, pero el caso de numeros tiene otro fin y se recomienda el uso de listas.

Por ejemplo, para los que dominan el C, o el Java u otros similares, sabemos muy bien como sumar numeros: usamos por ejemplo en c:

int a=0;
int b=10;
int suma =a+b, con lo que suma toma el valor de 10

Pero en lisp, se debe hacer lo siguiente
setq a '0
setq b '10
setq suma (+ a b), y nos da lo mismo. Aqui abajo un dibujo de como seria en el programa LISP.



Donde: setq "simbolo" "lista", se le asigna a "simbolo", una lista, la lista se declara previamente con una " ' " seguido del numero o letra que queremos asignar, si deseamos asignar por ejemplo la letra "a", sera: setq algo 'a, si queremos asignar los elementos 1, 2 y 3, sera: setq algo '(1 2 3)
Logicamente pueden existir sublistas, como (1 (2 3) 4 (23) ) o listas nulas ().
en la ultima parte donde hago "setq suma (+ a b)", no pongo la " ' " antres del parentesis, debido a que no quiero crear una lista con los elementos +,a y b, sino quiero dar la suma(y en lisp la suma se realiza poniendo el simbolo primero y luego los 2 valores a ser operados), deben estar en parentesis pues si no los hubiera, lisp pensaria que son 3 parametros mas, con lo cual generaria un error en el metodo setq.
Si quieren un manual de lisp lo pueden encontrar en los links favoritos que estan en el blog, donde hay mucha informacion, tambien tengo un pequeño doc con algunos ejercicios, puedes entrar aqui (Esto es para los que saben un poco, para los que no visiten la pagina).
Aun asi es solo una pequeña introduccion a este lenguaje que llevamos haciendo en IA, luego les explicare mas, solo les doy una vision general de este lenguaje.

No hay comentarios:

Publicar un comentario