viernes, 8 de mayo de 2015

Programación Declarativa

La programación declarativa es un estilo de programación en el que el programador especifica qué debe computarse y no cómo debe hacerse. Según este principio Kowalski define un programa como la unión de lógica y control (programa = lógica + control), donde el Componente lógico determina el significado, mientras que el de control solo su eficiencia. Así la tarea de programar se centra en la lógica, puesto que se asume el control automático a la máquina (García , 2008).
 La programación declarativa forma parte de los requisitos fundamentales que debe poseer un programador a la hora de desarrollar un proyecto, ya que mediante esta se pueden hacer uso de los diferentes actitudes que el programador posee y quiere plasmarlas en el análisis correspondiente, haciendo uso de su lógica y conocimientos adquiridos acerca del control lógico que debe tener un producto. ( Autores, 2015),


La característica fundamental de la programación declarativa es el uso de la lógica como lenguaje de programación:
  1.       Un programa es una teoría formal en una cierta lógica, esto es, un conjunto de fórmulas lógicas que resultan ser la especificación del problema que se pretende resolver. 
  2.       La computación se entiende como una forma de inferencia o deducción en dicha lógica.


La programación lógica se basa en fragmentos de la lógica de predicados: lógica de cláusulas de Horn. En esta no hay ninguna referencia explícita a la representación en memoria. Un lenguaje declarativo conlleva la gestión automática de la memoria. Se utiliza un mecanismo que permite una búsqueda indeterminista (builtin search) de soluciones, por tanto:
El programa puede responder a diferentes objetivos sin efectuar cambios.
Le permite el cómputo de datos parcialmente definidos.
      La relación de entrada/salida no está fijada de antemano.



     Los lenguajes funcionales se basan en el concepto de función matemática y su definición mediante ecuaciones (generalmente recursivas) que constituyen el programa. Con estos lenguajes existe la necesidad de fijar el perfil de la función => tipo de datos.Las características de estos lenguajes son:
a)      Transparencia referencial: la salida depende exclusivamente de la entrada.

b)      Capacidad de composición: de cualquier otro tipo de funciones, además la Composición refuerza la modularidad.

c)      Orden superior: tratar las funciones como unidades simples.

No hay comentarios:

Publicar un comentario