miércoles, 20 de mayo de 2009
miércoles, 22 de abril de 2009
¿Qué es un Programa?
¿Qué es un lenguaje de Programación?
¿Características de los lenguajes de programación?
¿Paradigmas de programación?
Programa
· La unión de una secuencia de instrucciones que un computador puede interpretar y ejecutar y un conjunto de estructuras de datos que almacenan la información sobre la que la operan las instrucciones
Lenguaje de Programación
· Es una técnica de comunicación estilizada que se utiliza para controlar el comportamiento de una maquina (usualmente un computador)
· Como los lenguajes humanos, los lenguajes de programación tienen reglas sintácticas y semánticas para definir el significado
· Herramienta que permite a un programador especificar de manera precisa: sobre qué datos una computadora debe operar, cómo deben ser estos almacenados y transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias
· Ejemplos: Visual Basic C/C++ JAVA FORTRAN LISP
Características de los Lenguajes de Programación
· Tipos de datos
· Estructuras de datos
· Instrucciones y Control de flujo
· Filosofía de diseño
· Compilación e Interpretación
Paradigmas de Programación
· Orientado a aspectos
· Concurrente
· Declarativo
· Funcional
· Imperativo
· LOGICO
· Multiparadigma
· Orientado a objetos
· Scripting
HISTORIA DE LA PROGRAMACION LOGICA
Remontándonos en el tiempo podemos tomar a Aristóteles (384-322 a.C.) y su teoría silogística como los precursores de la lógica matemática y en consecuencia de la Programación lógica. La teoría silogística, que estudia una clase particular de implicaciones con dos premisas y una conclusión, también fue tratada por los filósofos contemporáneos de Aristóteles y largamente estudiada en siglos posteriores, aunque no se produjeron innovaciones de interés hasta el siglo XVII con los trabajos de Descartes y Leibnitz.
Dos siglos después Boole dio un paso importante en el sistema de razonamiento aristotélico poniendo en relación la lógica y el algebra. Los trabajos de Boole fueron modificados y ampliados mas tarde por los lógicos y matemáticos como Jevon, Pierce, Schroeder y Huntington entre otros.
Llegamos así a finales del siglo XIX y principios del XX con la revolución de la fundamentacion de las Matemáticas gracias a los trabajos de Frege, Cantor, Peano, Russell y Whitehead entre otros que marcan el periodo más apasionante y de mayor actividad en la historia de la lógica matemática.
Llegamos a la mitad del siglo XX y descubrimos que de forma paralela al desarrollo de la lógica se ha producido un espectacular avance de las llamadas “maquinas de calcular”, avance sobre el que reflexiona A. Turing en un articulo titulado “¿Pueden pensar las maquinas?”, publicado en 1950 y que podemos dar como punto de partida de lo que después se llamara Inteligencia Artificial.
No obstante hasta la primera mitad de los sesenta, con los trabajos de Kowalski y el primer PROLOG de Colmerauer cuando nace la Programación Lógica como rama de la demostración automática con personalidad propia.
PROGRAMACION LOGICA
La Programación Lógica estudia el uso de la lógica para el planteamiento de problemas y el control sobre las reglas de inferencia para alcanzar la solución automática.
La Programación Lógica, junto con la funcional, forma parte de lo que se conoce como Programación Declarativa, es decir la programación consiste en indicar como resolver un problema mediante sentencias, en la Programación Lógica, se trabaja en una forma descriptiva, estableciendo relaciones entre entidades, indicando no como, sino que hacer, entonces se dice que la idea esencial de la Programación Lógica es
Programa= lógica + control
Lógica (programador): hechos y reglas para representar conocimiento
Control (interprete): deducción lógica para dar respuestas (soluciones)
La programación lógica intenta resolver lo siguiente:
Dado un problema S, saber si la afirmación A es solución o no del problema o en que casos lo es. Además queremos que los métodos sean implantados en maquinas de forma que la resolución del problema se haga de forma automática
La programación lógica: construye base de conocimientos mediante reglas y hechos
Regla: implicación o inferencia lógica que deduce nuevo conocimiento, la regla permite definir nuevas relaciones apartir de otras ya existentes
Ej.:
Mortal (x): - humano(x)
x es mortal si x es humano
Hecho: declaración, cláusula o proposición cierta o falsa, el hecho establece una relación entre objetos y es la forma más sencilla de sentencia
Ej.:
Humano (Sócrates); Sócrates es humano
Ama (Juan, Maria) ; ama Juan a Maria
Consulta: se especifica el problema, la proposición a demostrar o el objetivo Partiendo de que los humanos son mortales y de que Sócrates es humano, deducimos que
Sócrates es mortal
Mortal (x): - humano(x);- los humanos son mortales ; regla
Humano (Sócrates); Sócrates es humanos ; hecho
Sócrates es mortal ; consulta
La programación lógica comprende dos Paradigmas de Programación la Programación Declarativa y la Programación funcional.
La programación declarativa 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.
FUNDAMENTOS DE LA PROGRAMACION LOGICA
· La mayoría de los Lenguajes de Programación se basan en la Teoría Lógica de Primer Orden, aunque también incorporan algunos comportamientos de orden superior, en este sentido, destacan los lenguajes funcionales ya que se basan en el Calculo Lambda, es la única teoría lógica de orden superior.
La Teoría Lógica de Primer Orden o también llamada lógica de predicados: es un sistema deductivo basado en un Lenguaje Lógico Matemático formal de gran utilidad para las Matemáticas, Filosofía, Lingüística y Computacional. Incluye proposiciones lógicas, predicados y cuantificadores.
CARACTERISTICAS DE LA PROGRAMACION LOGICA
· Unificación de términos
· Mecanismos de inferencia automática
· Recursion como estructura de control básica
· Visión lógica de la computación
LENGUAJES DE PROGRAMACION LOGICA
Un lenguaje es el CLP pero el lenguaje de programación lógica por excelencia es el PROLOG.
Prolog: es un Lenguaje de Programación diseñado para representar y utilizar el conocimiento que se tiene sobre un determinado dominio. Los programas en Prolog responden preguntas sobre el tema del cual tienes conocimiento.
La popularidad del lenguaje se debe a su capacidad de deducción y además es un lenguaje fácil de usar por su semántica y sintaxis. Solo busca relaciones entre los objetos creados, las variables y las listas, que son su estructura básica.
Escribir un programa en Prolog consiste en declarar el conocimiento disponible acerca de objetos, además de sus relaciones y sus reglas, en lugar de correr un programa para obtener una solución, se hace una pregunta, el programa revisa la base de datos para encontrar la solución a la pregunta, si existe mas de una solución, Prolog hace un barrido para encontrar soluciones distintas. El propio sistema es el que deduce las respuestas a las preguntas que se le plantean, dichas respuestas las deduce del conocimiento obtenido por el conjunto de reglas dadas.
CAMPOS DE APLICACIÓN
· Sistemas Expertos , donde un Sistema de información mita 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.
·Inteligencia artificial
·Sistemas de información
miércoles, 15 de abril de 2009
viernes, 20 de marzo de 2009
miércoles, 11 de marzo de 2009
Motivación
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.
Campos de aplicación
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.
Fundamentos
Ejemplo
x es mortal si x es humano
Hecho: declaración, cláusula o proposición cierta
o falsa, el hecho establece una relación entreobjetos y es la forma más sencilla de sentencia
Ej:Humano (Sócrates); Sócrates es humanoAma (Juan, Maria) ; ama Juan a MariaConsulta: se especifica el problema, laproposición a demostrar o el objetivoPartiendo de que los humanos son mortales y deque Sócrates es humano, deducimos queSócrates es mortalMortal (x): - humano(x);- los humanos sonmortales ; reglaHumano (Sócrates); Sócrates es humano; hechoSócrates es mortal.
Otro ejemplo
•Regla 1 si un animal es ungulado y tiene rayas negras, entonces es una cebra
•Regla 2 si un animal rumia y es mamífero, entonces es ungulado
•Regla 3 si un animal es mamífero y tiene pezuñas, entonces es ungulado
•Hecho 1 el animal es mamífero•Hecho 2 el animal tiene pezuñas•Hecho 3 el animal tiene rayas negras
•Consulta: demostrar a partir de la base de conocimientos que el animal es una cebra•Es cebra: - es-ungulado, tiene-rayas-negras
•Es ungulado: - rumia, es-mamífero
•Es ungulado: - es-mamífero, tiene-pezuñas
•Es-mamífero
•Tiene-pezuñas
•Tiene rayas-negras
DERIVADA
:-padre(P,luis),procrean(H,M,P). --------> :-procrean(P,M1,luis),procrean(H,M,P).{P/antonio, M1/ana}----------> :-procrean(H,M,antonio).{H/andres, M/lola}------------->(éxito)
Lenguajes
¿ Para qué se usa ? Su principal uso se basa en las aplicaciones de inteligencia artificial o similares.
Sistemas expertos.
Demostración automática.
Reconocimiento de lenguaje natural.
Otros usos.
Fundamentos de la Programación Lógica Se basan principalmente en la teoría Lógica de Primer Orden, y en algunos de nivel superior. Destacamos los lenguajes funcionales como teoría lógica de orden superior que es demostradamente computable. No se basa en la veracidad o falsedad de expresiones o sentencias sino de las relaciones que se generan entre ellas. Así se basan en un mecanismo de inferencia. Éste requerirá de un lenguaje que exprese en una forma sencilla y sin ambigüedad las expresiones que representen las afirmaciones y conclusiones. Así nos basamos en expresiones y relaciones de la forma que:
Juan es hijo de Pedro.
Dos es mayor que uno. Así los programas se establecen como conjuntos de axiomas (base de conocimiento), expresados mediante cláusulas de Horn, para la definición de predicados entre objetosesolver un problema mediante sentencias, en la programación lógica se trabaja de forma descriptiva, estableciendo relaciones, y no indicando un cómo sino un qué hacer. Es decir el algoritmo que se quiera diseñar se construye especificando un conocimiento en un lenguaje formal y para resolverlo se uso la inferencia o control que actúa sobre aquel.
State of the art, expresión del inglés, hace referencia al nivel más alto de desarrollo conseguido en un momento determinado sobre cualquier aparato, técnica o campo científico.
La expresión inglesa se puede traducir al español también como "punta", o "[lo más] avanzado"; por ejemplo, state-of-the-art technology se traduce dentro del contexto cultural hispano, es decir, no literal, como "tecnología punta" o "tecnología de vanguardia".
Dentro del ambiente tecnológico industrial, se entiende como "estado del arte" o "estado de la técnica" todos aquellos desarrollos de última tecnología realizados a un producto, que han sido probados en la industria y han sido acogidos y aceptados por diferentes fabricantes.
En inglés, la frase va unida con guiones cuando se utiliza como adjetivo: "This machine is an example of state-of-the-art technology", mas no cuando se utiliza como un sustantivo. En español no se cumple esta convención, aunque puede usarse de igual manera.
En el campo de la propiedad industrial, en especial en el campo de las patentes, se suele denominar Estado de la Técnica o "prior art". Se define mediante todo aquello que ha sido publicado, ya sea en el país donde se busca la patente o en todo el mundo, antes de la fecha de solicitud de la patente.
Dentro de un escrito académico técnico, se denomina Estado del Arte a la base teórica sobre la que se basa el escrito, o la cual se rebate en el desarrollo posterior en el escrito y que forma parte introductoria del mismo.
ALGO SOBRE LA PROGRAMACION LOGICA , ESTO SI ES IMPORTANTE PARA LO QUE TIENE QUE VER CON LO DEL ESTADO DE ARTE
Bibliografía
http://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gica
Foundations of Logic Programming, J.W. Lloyd, Springer-Verlag, 1991.
Essentials of Logic Programming, C. Hogger, Clarendon Press, Oxford, 1990.
Logic for Computer Science: Foundations of Automatic Theorem Proving, J.H. Gallier, John Wiley and Sons, 1987.
Foundations of Logic Programming, J.W. Lloyd, Springer-Verlag, 1991.
Essentials of Logic Programming, C. Hogger, Clarendon Press, Oxford, 1990.
Logic for Computer Science: Foundations of Automatic Theorem Proving, J.H. Gallier, John Wiley and Sons, 1987.
nuestros blog y red, la excesiva consulta digital puede despistarnos. Pero con lo visto hasta ahora debéis dedicar más tiempo en esta materia, para conseguir que la evaluación próxima (1/2) pueda medir avances. Alcanzar al menos un soporte informativo como para poder responder a una necesidad de comunicación en la especialidad que planteas para tu blog exige que cualquiera pueda encontrar en los enlaces que haces públicos en tu blog, agregador y marcador social
martes, 17 de febrero de 2009
El fin de este proyecto es conocer mas sobre la programacion lógica que hace parte del Paradigma Declarativo y la cual se basa en la lógica como su mismo nombre lo dice y sabemos que la lógica es un método para la formacion de los procesos del pensamiento humano, basado en los axiomas (cada afirmacion que yo hago) de los cuales deducimos consecuencias o conclusiones.
Entonces la programacion lógica aplica la lógica de predicados a partir de expresiones conocidas (premisas) y atravez de esto se genera un nuevo conocimiento (una conclusión).
Un ejemplo:
Todo hombre es futbolista
Juan es hombre
Juan es futbolista
Un programa en programacion lógica se constituye mediante axiomas, reglas de inferencia y una hipótesis por demostrar.
la programacion lógica se utiliza en inteligencia artificial y el lenguaje mas representativo es el PROLOG
Se suele utilizar en la inteligencia artificial y pequeños programas infantiles. Se trata de una programación basada en el cálculo de predicados (una teoría matemática que permite lograr que un ordenador basándose en hecho y reglas lógicas, pueda dar soluciones inteligentes).
Un recorrido por la programación lógica y uno de sus lenguajes más representativos: Prolog, clásico de la inteligencia artificial, que se aplica de múltiples formas en el desarrollo de software comercial.
La programación lógica, junto con la funcional, forma parte de lo que se conoce como programación declarativa. En los lenguajes tradicionales, la programación consiste en indicar cómo resolver un problema mediante sentencias; en la programación lógica, se trabaja de una forma descriptiva, estableciendo relaciones entre entidades, indicando no cómo, sino qué hacer. La ecuación de Robert Kowalski (Universidad de Edimburgo) establece la idea esencial de la programación lógica: algoritmos = lógica + control. Es decir, un algoritmo se construye especificando conocimiento en un lenguaje formal (lógica de primer orden), y el problema se resuelve mediante un mecanismo de inferencia (control) que actúa sobre aquél.
El lenguaje Prolog, principal representante del paradigma, se basa en un subconjunto de la lógica de primer orden (restricción de la forma clausal de la lógica denominada cláusulas de Horn). Philippe Roussel y Alain Colmerauer (Universidad de Aix-Marseille) lo crearon en 1972, y su base teórica se debe en gran parte a Kowalski.