El paradigma lógico
Tiene como característica principal la aplicación de las reglas de la
lógica para inferir conclusiones a partir de datos. Conociendo la
información y las condiciones del problema, la ejecución de un programa
consiste en la búsqueda de un objetivo dentro de las declaraciones
realizadas.
Esta forma de tratamiento de la información permite pensar
la existencia de “programas inteligentes” que puedan responder, no por
tener en la base de datos todos los conocimientos, sino por poder
inferirlos a través de la deducción.
La importancia del concepto de declaratividad en este paradigma, permite
encuadrarlo dentro de los paradigmas declarativos. Al separar el
control y la lógica, el programa se transforma en un conjunto de
declaraciones formales de especificaciones que deben ser correctas por
definición.
Un programa lógico no tiene un algoritmo que indique los pasos que
detallen la manera de llegar a un resultado, sino que está formado por
expresiones que describen la solución (o más precisamente, la
“declaran”). De esta manera, la clave para hacer un programa lógico es
poder explicitar una declaración que describa correctamente la solución
del problema.
Principales características
El paradigma tiene sus fundamentos en las teorías de la lógica
proposicional. De ellas, se toman en particular las Cláusulas de Horn,
que son una forma de lógica de predicados con una sola conclusión en
cada cláusula y un conjunto de premisas de cuyo valor de verdad se
deduce el valor de verdad de la conclusión: una conclusión es cierta si
lo son simultáneamente todas sus premisas.
Por su esencia declarativa, un programa lógico no tiene un algoritmo que
indique los pasos que detallen la manera de llegar a un resultado, sino
que es el sistema internamente el que proporciona la secuencia de
control.
No existe el concepto de asignación de variables, sino el de
unificación. No hay un “estado” de las variables que se vaya modificando
por sucesivas asignaciones, generalmente asociadas a posiciones de
memoria, sino que las variables asumen valores al unificarse o “ligarse”
con valores particulares temporalmente y se van sustituyendo durante la
ejecución del programa.
Un programa lógico contiene una base de conocimiento sobre la que se
hacen consultas. La base de conocimiento está formada por hechos, que
representan la información del sistema expresada como relaciones entre
datos, y por reglas lógicas que permiten deducir consecuencias a partir
de combinaciones entre los hechos y, en general, otras reglas. Se
construye especificando la información del problema real en una base de
conocimiento en un lenguaje formal y el problema se resuelve mediante un
mecanismo de inferencia que actúa sobre ella. Así pues, una clave de la
programación lógica es poder expresar apropiadamente todos los hechos y
reglas necesarios que definen el dominio de un problema.
En otros paradigmas, las salidas son funcionalmente dependientes de las
entradas, por lo que el programa puede verse abstractamente como la
implementación de una transformación de entradas en salidas. En cambio,
la programación lógica está basada en la noción de que el programa
implementa una relación, en vez de una transformación. Los predicados
son relaciones, que al no tener predefinido una “dirección” entre sus
componentes, permiten que sus argumentos actúen indistintamente como
argumentos de entrada y salida. Esta característica se denomina
inversibilidad. A su vez, a diferencia de las funciones donde está la
restricción del a unicidad de la imagen para un elemento determinado del
dominio, una relación permite vincular a cada elemento con muchos otros
elementos, permitiendo soluciones alternativas. Dado que las relaciones
son más generales que las transformaciones, la programación lógica es
potencialmente de más alto nivel que la de otros paradigmas.
Internamente, existe un mecanismo, un “motor”, que actúa como control de
secuencia. Durante la ejecución de un programa va evaluando y
combinando las reglas lógicas de la base de conocimiento para lograr los
resultados esperados. La implementación del mecanismo de evaluación
puede ser diferente en cada lenguaje del paradigma, pero en todos los
casos debe garantizar que se agoten todas las combinaciones lógicas
posibles para ofrecer el conjunto completo de respuestas alternativas
posibles a cada consulta efectuada. El más difundido se denomina
backtracking, que utiliza una estrategia de búsqueda primero en
profundidad.
La recursividad como estrategia lógica para encontrar soluciones, junto
con la utilización de listas para representar conjuntos de valores, son
dos características típicas de los programas lógicos.
Los lenguajes del paradigma lógico, en general incluyen herramientas
para realizar soluciones polimórficas y manejar el concepto de orden
superior, entendido como la capacidad de un lenguaje para manejar su
propio código como una estructura de datos más. Son un conjunto de
funcionalidades que dotan de una enorme expresividad y potencia a los
programas.
Existen también otras herramientas más complejas, como las que buscan
incrementar la eficiencia o las que abren a la posibilidad de meta
programación, que requieren de una cuidadosa utilización ya que se
introducen en el interior del sistema mismo y permiten alterar la
naturaleza declarativa del paradigma.
Campo de aplicación
El paradigma es ampliamente utilizado en las aplicaciones que tienen que
ver con la Inteligencia Artificial, particularmente en el campo de
sistemas expertos y procesamiento del lenguaje humano.
Un sistema experto es un programa que imita el comportamiento de un
experto humano. Por lo tanto contiene información (es decir una base de
conocimientos) y una herramienta para comprender las preguntas y
encontrar la respuesta correcta examinando la base de datos (un motor de
inferencia).
En el caso del procesamiento del lenguaje humano se trata de dividir el
lenguaje en partes y relaciones y tratar de comprender su significado.
Para plantear los problemas en términos del paradigma se definen reglas
lógicas entre las diferentes partes.
También es útil en problemas combinatorios o que requieren gran cantidad
o amplitud de soluciones alternativas, dada la naturaleza combinatoria
del mecanismo de backtracking y como lenguaje de prototipación y
programación exploratoria.
Otros casos de utilidad práctica del paradigma son:
• Paralelización automática de programas.
• Programación distribuida y multiagente.
• Validación automática de programas.
• Prototipado rápido de aplicaciones.
• Bases de datos deductivas.
• Acceso a bases de datos desde páginas Web.
Historia y lenguajes
La base conceptual de la lógica proposicional es desarrollada por Alfred
Horn, en los años 50, en forma independiente al desarrollo
computacional, al publicar “Sobre sentencias las cuales son verdaderas
de la unión directa de las álgebras”, en la cual presenta un modelo
lógico para el tratamiento de oraciones del lenguaje natural, donde se
explican las luego denominadas “cláusulas de Horn”.
En la primera mitad de la década del 70, en base a las cláusulas de
Horn, surgen las primeras versiones de lenguajes lógicos como una
herramienta para resolver ciertos problemas en el área de la
inteligencia artificial, originalmente vinculados al tratamiento
computacional del lenguaje natural. Más concretamente, en 1972, en la
Universidad de Marsella, Alain Colmerauer, Philippe Roussel y un grupo
de investigadores presentan el lenguaje de programación lógica Prolog.
Luego se va perfeccionando el lenguaje y se escribe el compilador.
Pocos años después se definen los principios que constituyen al
Paradigma Lógico como un paradigma de programación, con la participación
determinante de Robert Kowalski.
Inicialmente se trataba de un lenguaje totalmente interpretado hasta
que, a mediados de los 70, David H.D. Warren desarrolló un compilador
capaz de traducir Prolog en un conjunto de instrucciones de una máquina
abstracta denominada Warren Abstract Machine, o abreviadamente, WAM.
Desde entonces Prolog es un lenguaje semi-interpretado.
En 1979, en la Universidad de Edimburgo se escribe un nuevo compilador
para el Prolog, adaptándolo al paradigma lógico planteando la ecuación
Lógica + control + estructuras de datos = programas y se sigue
perfeccionando el lenguaje.
Aunque con ciertas dificultades iniciales, debido principalmente a la
novedad del paradigma y a la escasa eficiencia de las implementaciones
disponibles, el lenguaje se fue expandiendo rápidamente, sobre todo en
Europa y en Japón. Prolog recibió un gran empuje en 1981, cuando el
Instituto Japonés para la Nueva Generación de Tecnología Informática
eligió a la programación lógica como su tecnología de software
diferencial, y comenzó un proyecto para proveer la tecnología de
hardware complementaria en la forma de máquinas de inferencia lógica
rápidas (proyecto de ordenadores de quinta generación).
En 1995, el lenguaje se normaliza con el correspondiente estándar ISO.
En la actualidad Prolog se ha convertido en una herramienta de
desarrollo de software práctica y de gran aceptación para la que se
dispone de múltiples compiladores, tanto comerciales como de libre
distribución.
PROLOG
El Prolog es el lenguaje emblemático del paradigma lógico. Su evolución
no puede separarse de la historia misma del paradigma.
El lenguaje Prolog no fue realmente diseñado como tal, sino que más bien
fue evolucionando mayoritariamente en las Universidades de Marsella y
Edimburgo, como una herramienta experimental de inteligencia artificial.
Debido a la falta de una definición común, varios dialectos de Prolog
evolucionaron. De ellos, el dialecto de Edimburgo es aceptado
ampliamente como estándar.
Desde entonces, el lenguaje Prolog ha sido implementado con diferentes
versiones y desarrollado por distintos fabricantes, manteniendo la misma
base del lenguaje, pero con pequeñas variantes y herramientas
adicionales para facilitar la programación.
hola, gracias por la informacion, me podrias auxiliar, sabras de un sistema basado en el paradigma logico??? te agradecere tu ayuda
ResponderEliminarVerbo :V
ResponderEliminarES UNA ESTAFA .i.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarMEJOR VISITA XVIDEOS :v
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminar