Estoy investigando lenguajes de programación utilizados para la programación de IA. Sé que LISP se enseña como un lenguaje de programación de IA en mi universidad, pero Prolog rara vez lo es. Soy aficionado a Prolog, pero no soy un programador de IA, así que no creo que esté calificado para juzgar por mí mismo por qué Prolog es mejor que LISP / Scheme. Me preguntaba si los programadores tenían alguna aportación sobre este tema.
¿Cómo podría argumentar que Prolog sería más útil para la programación de IA?
Lo he estado investigando un poco, y el argumento básico que he visto una y otra vez es que, dado que los pensamientos se presentan en lógica, y Prolog es un lenguaje de programación lógico, Prolog puede construir máquinas de decisión fácilmente, o algo por el estilo.
¿Hay algo más que se pueda decir de Prolog en AI?
Respuestas:
Del prefacio a la Programación Prolog para la Inteligencia Artificial :
Básicamente es un gran lenguaje para expresar diversas relaciones y objetivos de una manera sucinta, (en su mayoría) legible y (semi) natural. El código equivalente en, por ejemplo, el Lisps tiende a ser más detallado y más ofuscado en su intento porque pasas mucho tiempo en las entrañas y la plomería de la gestión y el razonamiento sobre las relaciones.
fuente
Tomé una introducción al curso de IA en mi licenciatura que usó Prolog para hacernos implementar un sistema experto.
Un sistema experto es un software que se utiliza para resolver un problema muy específico cuya solución depende de un gran número de reglas y variables.
Por ejemplo, podrías imaginar un sistema experto que te diga si debes llevar un paraguas contigo cuando salgas o no; le daría un conjunto de datos (si está nublado, si llovió el día anterior, en qué estación es, etc.) y el sistema experto revisará las reglas para darle una respuesta (si está nublado y llovió el día anterior, entonces deberías llevar un paraguas).
La naturaleza de Prolog hace que sea muy sencillo implementar reglas y hechos (en Prolog, todo es una regla o un hecho), y luego "consultar la base de datos" (obtener una respuesta a su pregunta), incluso cuando tenga miles de estas reglas y hechos .
Si está interesado en el tema, le recomiendo que instale un intérprete de Prolog e intente implementar un sistema experto muy básico para tener una idea del mismo; podría ayudarlo a comprender por qué es una herramienta tan poderosa para estas tareas.
fuente
La diferencia es un poco como usar SQL para consultas de bases de datos en lugar de escribir un programa en, digamos, C. En SQL, usted dice lo que quiere, pero no tiene que (directamente) especificar el algoritmo utilizado para derivarlo.
Un programa Prolog a veces se llama una base de datos, pero en realidad es un conjunto de declaraciones de lógica de predicados. El mecanismo de evaluación toma la consulta y realiza sustituciones basadas en las declaraciones de lógica de predicados, haciendo una búsqueda para encontrar las soluciones correctas. Todos los algoritmos de búsqueda necesarios (mucho más involucrados que una consulta SQL) están integrados en el compilador de Prolog.
Una consulta SQL, si fuera a implementar la misma lógica ingenuamente en C, no necesitaría mucho más que bucles y condicionales if / else.
Una consulta de Prolog, implementada en C, necesitaría (al menos) una búsqueda de retroceso utilizando la técnica union-find. Y eso, de nuevo, es una solución ingenua.
Un cierto tipo de programación de IA implica mucho del tipo de búsqueda que hace Prolog. Como era de esperar, realmente: originalmente, la programación de IA se realizó en Lisp o en algún otro idioma, pero Prolog se escribió específicamente para hacer el trabajo.
La lógica de predicados es el enfoque natural para definir ese estilo de problema de IA y, en Prolog, una vez que tenga esa definición, puede ejecutarla directamente, sin tener que implementar todos esos algoritmos de búsqueda incómodos.
fuente
Tomé 2 módulos Prolog en la Universidad y disfruté mucho el desarrollo en el idioma.
Es particularmente bueno para sistemas expertos, escribí un diagnóstico de síntomas médicos.
La forma en que me lo explicaron fue que Lisp tiende a usarse más en ciertos países y Prolog en otros.
En términos de cuál es el mejor, solo cubrí a Lisp brevemente cuando hice el cálculo lambda en un módulo de Ciencias de la Computación Teórica, así que soy parcial hacia Prolog.
Si está desarrollando una aplicación para lidiar con reglas y hechos para obtener respuestas, Prolog es muy bueno y, naturalmente, admite el retroceso.
fuente