La Programación Declarativa es un paradigma de programación en el cual el programador escribe el código que expresa los resultados o metas a conseguirse en lugar de poner en detalle los pasos específicos para conseguirlos.
Entre los lenguajes de programación declarativa está el SQL (lenguaje de consulta estructurado) que se utiliza para hacer consultas en un base de datos, en él se puede especificar los datos que se desea recuperar sin detallar cómo. La base de datos simplemente debe realizar la recuperación.
La Programación Declarativa deja un margen para la “optimización”. Con este tipo de paradigma se consigue como resultado un software mejor preparado para el futuro, ya que no es necesario determinar con cual procedimiento se alcanza un resultado.
Como ventaja de la programación declarativa tenemos que podemos describir problemas de manera más corta y precisa que “con los lenguajes imperativos”.
Funcionamiento de la programación declarativa:
- Abstracciones de alto nivel: Los “marcos de trabajo” proporcionan abstracciones de alto nivel con los cuales se puede expresar los resultados que queremos en forma directa. En lugar de detallar cada uno de los pasos del cálculo, se definen propiedades, condiciones o reglas que hacen una declaración del resultado final.
- Expresión de la lógica: Lo lógica expresa en términos lo que se quiere lograr en lugar de como lograrlo. Por ejemplo, en SQL se expresan las condiciones en las que se deben recuperar los datos.
- Ejecución subyacente: En un sistema subyacente como es el caso de un motor de base de datos, un navegador o un compilador, se interpreta el código de tipo declarativo y se determina la forma más idónea de ejecutarlo.
- State management: La programación declarativa abstrae la gestión de estados, por tanto, no es necesario hacer la gestión explícita de los cambios o transiciones de estado. Por ejemplo, en la programación funcional, que es un subconjunto de la programación declarativa, las funciones son puras, lo que significa que no producen efectos secundarios ni tienen que depender de estados externos. Con esto, el código es más predecible y comprensible.
- Estrategias de evaluación: Muchos de los lenguajes declarativos hacen estrategias de evaluación específicas con lo que se optimiza el rendimiento y la ejecución. Por ejemplo, al hacer una evaluación diferida en “lenguajes de programación funcional” se retrasa el “cálculo de expresiones” hasta que sus resultados sean necesarios. Con esto se puede lograr mejoras en el rendimiento y eficiencia en el consumo de recursos.
- Concentrarse en el qué y no en el cómo: La programación declarativa ayuda a los desarrolladores en lo que sería el resultado final que deseamos dejando atrás las complejidades de cómo lograrlo.
Tipos de programación declarativa:
- Programación Funcional: En la programación funcional, que es un paradigma declarativo, los programas se construyen utilizando funciones. Todas las funciones se usan “como funciones matemáticas” con las que se logra el mismo resultado para una misma entrada sin tener que modificar ningún estado externo. El resultado es un código más predecible y fácil de probar.
- Programación lógica: En la “programación lógica” se expresa la lógica y las relaciones entre sucesos mediante reglas. Con ella, el programador puede especificar los resultados que necesita sin establecer los procedimientos para lograrlos.
- Lenguajes específicos de dominio (DSL): Los “lenguajes específicos de dominio” son “lenguajes declarativos” creados y diseñados para tratar problemas específicos. Los DSL pueden ser usados por los desarrolladores para expresar operaciones o configuraciones complejas de forma concisa y legible.
- Programación de flujo de datos: Los “modelos de programación de flujo de datos” permiten modelar los programas como un gráfico de datos que fluyen entre operaciones. En el esquema resultante, cada nodo es una operación y cada borde es un flujo de datos. Esto es muy útil cuando se hace procesamiento en paralelo donde se enfoca en cómo se propagan los datos a través del sistema.
- Configuration Management: Para la “administración de la configuración” los lenguajes declarativos describen el estado deseado de un sistema. Con esto se eliminan pasos de procedimientos necesarios para lograr la configuración y los desarrolladores pueden entrarse en el resultado final.
- Programación reactiva: La “programación reactiva” se centra en flujos de datos asincrónicos. Con ella, los desarrolladores pueden declarar dependencias entre datos diferentes, lo que garantiza que los cambios se propaguen por el sistema en forma automática. Esto es muy útil en situaciones en las que se necesita procesar datos o reaccionar entre ellos en tiempo real.
Fuente:

0 comentarios