Programación Declarativa


Programación Declarativa: Centralizándose mas en el "Qué" en lugar del "Cómo" 

La programación declarativa es un paradigma que ha ganado popularidad en los últimos años debido a su enfoque en describir el resultado deseado sin especificar detalladamente cómo lograrlo. A diferencia de la programación imperativa, donde el programador debe proporcionar paso a paso las instrucciones para resolver un problema, la programación declarativa permite expresar la lógica sin entrar en detalles de implementación.

Características

  • Enfoque en el "qué": Los programas declarativos se centran en describir las propiedades y restricciones del resultado deseado, en lugar de especificar cómo obtenerlo.
  • Abstracción de bajo nivel: La programación declarativa oculta los detalles de bajo nivel, como la asignación de memoria y el control de flujo, permitiendo al programador concentrarse en la lógica del problema.
  • Inmutabilidad: En muchos lenguajes declarativos, los datos son inmutables, lo que significa que una vez asignados, no pueden ser modificados. Esto reduce los efectos secundarios y facilita el razonamiento sobre el programa.
  • Evaluación perezosa: Algunos lenguajes declarativos emplean la evaluación perezosa, donde las expresiones se evalúan solo cuando es necesario, mejorando la eficiencia y permitiendo trabajar con estructuras de datos infinitas.
Los lenguajes de programación declarativa mas conocidos son:
  • SQL (Structured Query Language): Utilizado para manipular y consultar bases de datos relacionales.
  • HTML/CSS: Lenguajes declarativos para estructurar y dar estilo a páginas web.
  • Prolog: Lenguaje de programación lógica utilizado en inteligencia artificial y sistemas expertos.
  • XSLT (eXtensible Stylesheet Language Transformations): Lenguaje declarativo para transformar documentos XML.
  • Haskell, Miranda, ML: Lenguajes de programación funcional que incorporan principios declarativos.

Ventajas de la Programación Declarativa:

  • Código más conciso y legible: Al eliminar detalles de implementación, los programas declarativos tienden a ser más concisos y fáciles de entender.
  • Menor propensión a errores: Dado que el programador se enfoca en el resultado deseado y no en los detalles de implementación, hay menos oportunidades de introducir errores.
  • Facilidad para razonar y verificar: Los programas declarativos son más fáciles de razonar y verificar formalmente, ya que se basan en principios matemáticos y lógicos.
  • Paralelización y optimización: Los lenguajes declarativos se prestan para la paralelización y optimización automática, ya que el compilador o intérprete puede tomar decisiones sobre cómo ejecutar el código de manera eficiente.

Programación declarativa e imperativa: 

El paradigma de programación imperativa (paradigma orientado a instrucciones) es el más antiguo de los dos paradigmas fundamentales. A diferencia de en la programación declarativa, en este caso, el desarrollador determina con precisión en el código fuente los pasos que debe dar el ordenador para alcanzar el resultado. Se prioriza, pues, el "cómo" de la vía de solución. Este enfoque se puede encontrar, por ejemplo, en Java, Pascal o en C. Por el contrario, en la programación declarativa se describe directamente el "qué" de la solución.

Ejemplo de programación declarativa

Un punto fuerte de la programación declarativa es su capacidad para describir problemas de forma más corta y precisa que el lenguaje imperativo.

Si se tiene que crear una lista con nombres, con la programación declarativa se puede describir en PHP con solo una línea de código, como vemos aquí abajo, mientras que el procedimiento imperativo necesita cinco líneas.


Programación Imperativa:

$listaparticipantes = [1 => 'Peter', 2 => 'Hans', 3 => 'Sarah'];
$nombres = [];
foreach ($listaparticipantes as $id => $apellido) {
    $nombres[] = $apellido;
}

Programación declarativa:

$nombres = array_values($listaparticipantes);

En conclusión, la programación declarativa ofrece un enfoque diferente y poderoso para abordar problemas de programación. Al centrarse en el "qué" en lugar del "cómo", permite a los programadores expresar la lógica de manera más concisa y menos propensa a errores.

Comentarios

Entradas populares