miércoles, 20 de mayo de 2009

miércoles, 22 de abril de 2009

PARADIGMAS DE PROGRAMACION

¿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

Contenido

  1. Motivación
  2. Campos de aplicación
  3. Fundamentos
  4. Ejemplo
  5. Lenguajes
  6. Bibliografía

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.

Campos de aplicación

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.

Fundamentos

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. 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).

Ejemplo

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 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

El lenguaje de programación lógica por excelencia es Prolog, que cuenta con diversas variantes. La más importante es la programación lógica con restricciones (véase artículo sobre programación con restricciones), que posibilita la resolución de ecuaciones lineales además de la demostración de hipótesis.


¿Qué es ?
Propuesta por Kowalski en 1974 facilita la tarea de programación liberando al programador haciendo una optimización de las dos componentes básicas de un algoritmo, Lógica y Control. La programación lógica consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de lenguajes de programación. Se ha convertido en el pilar de una nueva generación de lenguajes de programación. Junto con la programación funcional forma parte de lo que se conoce como programación declarativa, Como se irá explicando mas adelante en los lenguajes tradicionales se intenta r

¿ Cómo nació ?
Los ordenadores siempre se han programado usando lenguajes con propiedades de la propia maquina: aritmética simple, instrucciones de acceso…Un programa de estas características puede ocultar su propósito a los ojos de un ser humano, incluso uno que maneje dichos lenguajes o técnicas de programación. Estos lenguajes pertenecientes a la la programación imperativa han evolucionado de manera que ya no son tan difíciles de entender. La lógica matemática es la manera mas sencilla, para el ser humano, de expresar problemas y resolverlos con la aplicación de reglas, hipótesis y teoremas. De ahí el éxito de la programación lógica en campos donde la programación “de siempre” es un fracaso.
¿ 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.
Estado del arte

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://www.desarrolloweb.com/articulos/2477.php

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.
programa

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
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

INTRODUCCIÓN

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



PROGRAMACION LOGICA

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.
Se

































lunes, 16 de febrero de 2009

PROGRAMACION LOGICA

PROGRAMACION LOGICA: