viernes, noviembre 10, 2006

PARADIGMA DECLARATIVO


Introduccion

La Programación Declarativa, o bien un Paradigma declarativo, es un paradigma de programación que está basado en el desarrollo de programas especificando o "declarando" un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y detallan su solución. La solución es obtenida mediante mecanismos internos de control, sin especificar exactamente cómo encontrarla.

No se basa en el cómo se hace algo (cómo se logra un objetivo paso a paso), sino que describe (declara) cómo es algo. En otras palabras, se enfoca en describir las propiedades de la solución buscada, dejando indeterminado el algoritmo (conjunto de instrucciones) usado para encontrar esa solución. Es más complicado de implementar que el paradigma imperativo, tiene desventajas en la eficiencia, pero ventajas en la solución de determinados problemas.

Programación lógica y funcional

Los paradigmas declarativos han sido tomados de la matemática: la lógica y la teoría de
funciones.

  • La programación lógica se basa en un subconjunto del cálculo de predicados y presenta las acciones o sentencias en forma de clausulas de Horn. Un programa basado en la lógica consiste en una serie de axiomas o hechos, reglas de inferencia y un teorema o consulta a comprobar. La salida será ‘cierto’ si los hechos apoyan la consulta, ‘falso’ en otro caso. Prolog es el modelo de este tipo de lenguajes, aunque existen diversas sintaxis y aproximaciones para su evaluación.
  • Los lenguajes funcionales son modelos basados en la noción de las funciones matemáticas, las cuales pueden considerarse como un mecanismo para aplicar ciertas
    operaciones sobre algunos valores (argumentos), y con esto obtener un resultado (valor
    de la función para dichos argumentos). En los lenguajes funcionales puros no se permiten asignaciones a variables globales ni efectos laterales: sólo operan sobre funciones. Como en el caso de la programación lógica existe un prototipo, el LISP, de lenguaje funcional, pero como en aquél, se incluyen en las implementaciones prácticas muchas posibilidades no puristas.

Conceptos del paradigma declarativo

Los conceptos más importantes que identifican el lenguaje declarativo y aumentan su potencial en el desarrollo de aplicaciones son:

a) Funciones de orden superior: cuando una función puede servir como argumento de otra o puede almacenarse como valor en una estructura de datos, o bien cuando el resultado de una función es otra función. Esto proporciona una herramienta que maximiza el uso de la recursividad y el anidamiento, y permite un desarrollo más eficiente de aplicaciones.

b) Sistemas de interferencias de tipos: mecanismo que exime al programador de la responsabilidad de declarar los tipos de las funciones declaradas, y le permite al compilador deducir el tipo de datos al que están asociadas las expresiones, basándose en la evidencia que presenta el código al tiempo de la compilación del programa.

c) Polimorfismo paramétrico: permite que una determinada función tenga la capacidad de aceptar como parámetros una variedad de tipos distintos cada vez que sea llamada, sin que esto influya en que la función pueda obtener y regresar el resultado esperado.

d) Evaluación perezosa: una función intentará evaluar los parámetros con los que fue definida, para efectuar las reducciones que nos permitan obtener el valor de la función.

Bibliografía
  • "Programación funcional" - Jeroen Fokker, 1996
Fuentes