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