Inteligencia Artificial: Programacion logica… por encima de la funcional?


Antes que de empezar a programar, tenemos que tener en claro el significado de lo que es un paradigma de programación, este es una colección de patrones conceptuales que juntos modelan el proceso de diseño y determinan la estructura del programa.

Los programas escritos en lenguajes con paradigmas declarativos, se construyen con hechos, reglas, construcciones, relaciones o un conjunto de propiedades que nos pueda dar una solución.

Dentro del paradigma declarativo podemos encontrar varios tipos, pero nosotros nos enfocaremos a la programación Lógica.
Ojo, aquí se trata de exponer las definiciones de paradigmas Lógicos, como el uso en su resolución en prolog y los paradigmas funcionales…

Programación Lógica

Introducción
Durante todo este trabajo de investigación, el lenguaje de programación lógica que usaremos, Prolog.

En Prolog no es necesario definir los pasos que haríamos comúnmente en el programa como en los lenguajes de programación iterativa, sino que se puede ir construyendo nuestro programa con elementos tales como, predicado y hechos, bastante usada esta técnica en la ingeniería de software en la obtención de los casos de uso en la ingeniería de requisitos.
Según la Ingeniería de Software, podemos obtener lo siguiente.

1.-Predicados: Estos permiten la relación de las características de los objetos de nuestro mundo o las especificaciones que existan entre ellos.

2.-Hechos: es algo que está ocurriendo en nuestro mundo, característica o relación entre objetos. En el lenguaje natural un hecho podría ser por ejemplo que Lógica y Compatibilidad es una asignatura de Ingeniería Informática.

Programando en Prolog

A la hora de programar en Prolog tenemos dos cuerpos principales: la especificación de los hechos y las preguntas sobre esos objetos o relaciones.
Cuando creamos nuestra base de datos con esa especificación de hechos podemos poneros a hacer preguntas sobre esa especificación dando como resultado sí o no.
Prolog saca la respuesta explorando cada uno de los hechos introducidos en la base de datos hasta encontrar uno que coincida, que será el caso en la que la respuesta será afirmativa, o hasta que termine toda la base de datos, cuyo caso dará una respuesta negativa.
A la hora de ponernos a trabajar con Prolog necesitaremos un compilar o intérprete para este lenguaje. El más común y usado es el SWI-PROLOG que lo podemos encontrar tanto bajo Windows como y Linux y MacOS X.

Instanciación, Vinculación y Backtrancking

En Prolog, una variable puede llegar a tomar distintos valores.
Pero, ¿qué pasa si podemos encontrar varios valores que coincidan para nuestro hecho?
En Prolog lo podemos indicar poniendo”;”,en ese caso la variable no cambia de valor, simplemente le hemos indicado que no queremos ese valor y queremos que busque otro.
Prolog irá buscando por la base de datos hasta que encuentre otro, momento en lo que lo devolverá o diga no porque haya recorrido toda la base de datos.
Cuando hacemos preguntas más complejas intenta que se satisfaga la primera parte, si no la cumple tiene que volver hacia atrás.
Prolog es un lenguaje de programación que resuelve sus consultas utilizando Backtrancking, de ahí su enorme ineficiencia.

Estructuras de Datos: Listas

Las estructuras de datos están presentes en todos los lenguajes de programación y Prolog no va a ser menos. Una de las grandes ventajas de Prolog es el de poder crear estructuras de datos sencillas como árboles, grafos y demás estructuras de datos no lineales a partir de listas. Las listas en Prolog se dividen en dos partes:

Cabeza : Contiene el primer elemento de la lista ya se un átomo o una estructura

Cola : Contiene el resto de los elementos de una lista.

Ventajas y desventajas de la Programación Lógica

Ventajas
Simplicidad
Cercanía a las especificaciones del problema realizada con lenguajes formales

Sencillez, potencia y elegancia

Metodología rigurosa de especificación
Sencillez en la implementación de estructuras complejas

Desventajas
Poco eficientes
Poco utilizado en aplicaciones reales

Conclusiones Finales

Tanto la programación lógica como funcional tiene sus ventajas e inconvenientes. La programación lógica no es muy usada en aplicaciones reales debido a su alta ineficiencia.

La programación funcional cada día está más de moda gracias al uso de poder crear estructuras de datos muy complejas con un código muy simple.

Si a ello le sumamos que se le puede integrar con el lenguaje C, nos da un lenguaje bastante potente y usable.

Nos vemos

Besos y abrazos
Atte: Carlos Catzin.

Deja un comentario