Programación
Lógica
La programación lógica es un tipo de paradigmas de programación dentro del
paradigma de programación declarativa. El resto de los
subparadigmas de programación dentro de la programación declarativa son: programación funcional, programación con restricciones,
programas DSL (de dominio específico) e híbridos. La programación lógica gira
en torno al concepto de predicado,
o relación entre elementos. La programación funcional se basa en el concepto de
función (que no es más que una
evolución de los predicados), de corte más matemático.
Motivación
Históricamente, los ordenadores
se han programado utilizando lenguajes muy cercanos a las
peculiaridades de la propia máquina: operaciones aritméticas simples,
instrucciones de acceso a memoria, etc. Un programa escrito de esta manera
puede ocultar totalmente su propósito a la comprensión de un ser humano,
incluso uno entrenado. Hoy día, estos lenguajes pertenecientes al paradigma de
la Programación imperativa han evolucionado
de manera que ya no son tan crípticos.
En cambio, la lógica matemática es la manera más sencilla,
para el intelecto humano, de expresar formalmente problemas complejos y de
resolverlos mediante la aplicación de reglas, hipótesis y teoremas. De ahí que
el concepto de "programación lógica" resulte atractivo en diversos
campos donde la programación tradicional es un fracaso.
Aplicaciones
La programación lógica encuentra su hábitat
natural en aplicaciones de inteligencia artificial o relacionadas: Sistemas
expertos, donde un sistema de información imita las recomendaciones
de un experto sobre algún dominio de conocimiento.
- Demostración automática de teoremas, donde un programa genera nuevos teoremas sobre una teoría existente.
- Reconocimiento de lenguaje natural, donde un programa es capaz de comprender (con limitaciones) la información contenida en una expresión lingüística humana.
- Etc.
La programación lógica también se
utiliza en aplicaciones más "mundanas" pero de manera muy limitada,
ya que la programación tradicional es más adecuada a tareas de propósito
general.
La mayoría de los lenguajes
de programación lógica se basan en la teoría lógica de primer orden, aunque también
incorporan algunos comportamientos de orden superior como la lógica difusa.
En este sentido, destacan los lenguajes funcionales, ya que se basan en el cálculo
lambda, que es la única teoría lógica de orden superior que es
demostradamente computable (hasta el momento).
Información
Adicional
La programación funcional es un estilo
declarativo de programación basado en:
Exponer una colección de axiomas.
Presentar un teorema objetivo (goal).
La implantación intenta encontrar una
colección de axiomas y pasos de inferencia que impliquen el objetivo.
Axiomas expresados como Cláusulas de Horn.
H B1;B2; : : : ;Bn
El lenguaje combina axiomas existentes
utilizando el
proceso de resolución.
C A;B ^ D C ) D A;B
Prolog es el lenguaje más utilizado.
Prolog:
Los programas ejecutan en el contexto
de una base de datos de
cláusulas que se asumen
ciertas.
Las cláusulas están compuestas por términos: números – enteros o reales.
Átomos: Identificadores que
comienzan con minúscula.
Cadena entre comillas.
Secuencia de símbolos de puntuación.
Variables – identificadores que
comienzan con mayúscula.
Estructuras – átomo functor y una lista de argumentos
A tiempo de ejecución las variables se
instancian con valores
específicos como resultados del proceso de unificación.
Alcance limitado a la cláusula en la
cual aparece. Verificación dinámica de tipos. Anidamiento arbitrario de
estructuras.
Predicado – combinación de un
functor y su aridad.
En la base de datos de cláusulas puede
haber
Hechos – cláusulas de Horn sin
lado derecho.
Reglas – cláusulas de Horn con
lado derecho, usando :-
como símbolo de implicación (().
abuelo(X,Y) :- padre(X,Z), padre(Z,Y).
Todas terminan con un punto.
Consulta – cláusula de Horn sin
lado izquierdo.
Usualmente escritas en el
interpretador.
Ocasionalmente incluidas como
“inicialización” o “programa principal” en el texto del programa.
No hay comentarios:
Publicar un comentario