Lógica y Programación Declarativa
La lógica y la programación declarativa expresan los problemas como relaciones, hechos y reglas, dejando la búsqueda de soluciones a un motor de inferencia en lugar de instrucciones explícitas paso a paso.
Definition
La programación lógica es un paradigma declarativo en el que un programa es un conjunto de cláusulas lógicas (hechos y reglas), y la computación procede mediante deducción automatizada, típicamente resolución con unificación, para responder a consultas sobre ese conocimiento.
Scope
Este tema abarca la programación lógica basada en cláusulas de Horn y resolución (como en Prolog), la programación lógica con restricciones y la idea declarativa más amplia de especificar lo que debe cumplirse en lugar de cómo calcularlo. Incluye la unificación, la búsqueda con retroceso, la semántica de los programas lógicos basada en modelos y en la teoría de la prueba, y la separación de la especificación lógica del control.
Core questions
- ¿Qué significa computar probando un objetivo a partir de cláusulas lógicas?
- ¿Cómo la unificación y el retroceso realizan la búsqueda sobre un programa relacional?
- ¿Cómo se precisa la separación de la lógica del control?
- ¿Cómo extienden las restricciones la programación lógica pura?
Key theories
- Principio de resolución
- La resolución de Robinson proporciona una única regla de inferencia orientada a la máquina para la lógica de primer orden, ofreciendo el motor deductivo que hace que la programación lógica sea computacionalmente factible.
- Lógica más control
- El análisis de Kowalski distingue el contenido lógico de un programa (lo que es verdadero) de su componente de control (cómo se busca la prueba), enmarcando la programación lógica como una forma de variar el control manteniendo la lógica fija.
- Semántica declarativa y procedural de los programas lógicos
- Lloyd formaliza la semántica basada en modelos, de punto fijo y operacional de los programas lógicos definidos y prueba su correspondencia, fundamentando el significado de los programas lógicos.
Clinical relevance
Las técnicas declarativas y basadas en la lógica sustentan los lenguajes de consulta de bases de datos, los solucionadores de restricciones, la representación del conocimiento y los motores de reglas. Su énfasis en especificar problemas en lugar de algoritmos los hace adecuados para tareas de búsqueda combinatoria, configuración y razonamiento.
History
El principio de resolución de Robinson de 1965 sentó las bases deductivas. A principios de la década de 1970, Colmerauer y Roussel crearon Prolog, y Kowalski articuló la interpretación procedural de las cláusulas de Horn. El paradigma floreció durante la década de 1980, influyendo en el proyecto de la Quinta Generación de Japón, y más tarde se expandió a la programación lógica con restricciones y la programación de conjuntos de respuestas.
Debates
- Pureza versus control práctico
- Los lenguajes de programación lógica equilibran el ideal de la lógica declarativa pura con las necesidades prácticas de control explícito, como el corte y el ordenamiento, que mejoran la eficiencia pero comprometen la clara separación lógica/control.
Key figures
- Robert Kowalski
- Alain Colmerauer
- J. Alan Robinson
- John Lloyd
- Philippe Roussel
Related topics
Seminal works
- kowalski1979
- robinson1965
- lloyd1987
- colmerauer1993
Frequently asked questions
- ¿En qué se diferencia la programación lógica de la programación imperativa?
- En lugar de especificar una secuencia de operaciones, un programa lógico declara hechos y reglas, y un motor de inferencia busca pruebas que respondan a las consultas, por lo que el programador se centra en lo que es verdadero en lugar de cómo calcularlo.
- ¿Qué es la unificación?
- La unificación es el proceso de encontrar una sustitución que haga que dos términos lógicos sean idénticos; es el mecanismo central mediante el cual los programas lógicos hacen coincidir los objetivos con los encabezados de las cláusulas.