Programación Declarativa

Programación Declarativa
Información sobre la plantilla
Lenguajes.png
Concepto:Es un paradigma de programación basado en la lógica en el que se estudian de forma simple muchos aspectos avanzados de los lenguajes de programación modernos.

Programación Declarativa. Es un paradigma de programación basado en la lógica en el que se estudian de forma simple muchos aspectos avanzados de los lenguajes de programación modernos.

Características

La Programación Declarativa, en contraposición a la Programación Imperativa 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 (tan sólo se le indica a la computadora que es lo que se desea obtener o que es lo que se está buscando). No existen asignaciones destructivas, y las variables son utilizadas con transparencia referencial

Aunque en la Programación Declarativa cabe más de un paradigma de programación, se ha optado por centrarla en el estudio de la denominada Programación Lógica, el cual está basado en el cálculo de proposiciones y sus relaciones lógicas.

La programación declarativa es un estilo de programación en el que el programador especifica qué debe computarse más bien que cómo deben realizarse los cómputos.

  • "programa = lógica + control" (Kowalski)
  • "algoritmos + estructuras de datos = programas" (Wirth)

El componente lógico determina el significado del programa mientras que el componente de control solamente afecta a su eficiencia.

La tarea de programar consiste en centrar la atención en la lógica dejando de lado el control, que se asume automático, al sistema.

La característica fundamental de la programación declarativa es el uso de la lógica como lenguaje de programación:

  • 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, y

la computación se entiende como una forma de inferencia o deducción en dicha lógica. Los principales requisitos que debe cumplir la lógica empleada son:

  • Disponer de un lenguaje que sea suficientemente expresivo.
  • Disponer de una semántica operacional (un mecanismo de cómputo que permita ejecutar los programas).
  • Disponer de una semántica declarativa que permita dar un significado a los programas de forma independiente a su posible ejecución.

Diferencias entre imperativo y declarativo

En la Programación Imperativa se describe paso a paso un conjunto de instrucciones que deben ejecutarse para variar el estado del programa y hallar la solución, es decir, un algoritmo en el que se describen los pasos necesarios para solucionar el problema.

En la programación declarativa las sentencias que se utilizan lo que hacen es describir el problema que se quiere solucionar, pero no las instrucciones necesarias para solucionarlo. Esto último se realizará mediante mecanismos internos de inferencia de información a partir de la descripción realizada.

Aplicaciones

Este estilo de programación encuentra numerosas aplicaciones industriales en campos como las bases de datos, Ingeniería del software|ingeniería del software, procesadores de lenguajes, lenguaje natural, investigación operativa, seguridad de redes, etc.

Ventajas

Se ha dicho que los lenguajes declarativos tienen la ventaja de ser razonados matemáticamente, lo que permite el uso de mecanismos matemáticos para optimizar el rendimiento de los programas.

  • Elegancia, claridad, sencillez, potencia y concisión.
  • Semánticas claras, simples y matemáticamente bien fundadas.
  • Cercanos al nivel de abstracción de las especificaciones formales/informales de los problemas a resolver.
  • Referencialmente transparentes: Comportamiento matemático adecuado que permite razonar sobre los programas.
  • Soportan técnicas muy avanzadas de desarrollo, mantenimiento y validación de programas.
  • Altas dosis de paralelismo implícito.
  • Aplicaciones variadas y de gran interés.
  • Son fiables, elegantes y expresivos.

Resultados de corrección y completitud

Según la clase de lógica que se emplee como fundamento del lenguaje declarativo se obtenedrá los diferentes estilos de programación declarativa.

  • Ecuacional Funcional
  • Clausal Relacional
  • Heterogenea Tipos
  • Géneros ordenados Herencia
  • Modal S.B.C.
  • Temporal Concurrencia

Algunos lenguajes declarativos

Lenguajes lógicos

Lenguajes algebraicos

Lenguajes funcionales

Referencias

En estas referencias encontrará recursos de utilidad:

Véase además

Fuentes