Bienvenido de nuevo a otra entrada acerca de paradigmas de programación, hoy, desde Linceus, traemos con nosotros información suficiente para profundizar en el siguiente de ellos; programación restringida o basada en restricciones.
Éste particular protocolado de procedimientos restrictivos se basa en la especificación de un conjunto de restricciones que sustituyen los propios elementos de la programación lógica por las mismas con el objetivo de mejorar objetivamente el resultado final, dicho de otra forma, las relaciones que unen variables son sustituidas por ecuaciones específicas llamadas restricciones.
El objetivo del desarrollador que basa la construcción de código en ésta filosofía debe de satisfacer el máximo de restricciones simultáneamente, así pues un programa basado en restricciones que trabaje sobre una serie de valores fijos debe de aplicar sólo dichos valores a las variables para la resolución del código.
Hasta aquí hemos descrito todo lo que conforma la esencia procedimental del paradigma, pero, ¿cual es el objetivo y/o ventajas reales del uso de la programación con restricciones? Sin duda parece algo difícil poder sacar partido a un sistema que basa sus principios en la privación, pero, nada queda más lejos de la realidad
adquieren gran peso en cuanto a algunos dominios presentes en la programación lógica se refiere siendo más natural su resolución restrictiva que la metodología lógica, algunos de esos dominios son:
- Lineales, donde sólo se describen y analizan funciones lineales.
- Booleanos, donde solo existen restricciones del tipo verdadero/falso.
- Finitos, donde las restricciones son definidas en conjuntos finitos.
- Mixtos, los cuales involucran dos o más de los anteriores.
- Dominios en variables enteras y racionales.
AVISPA (Portal dedicado a la programación con restricciones):
Los lenguajes centrados en éste paradigma suelen tratarse de una mera extensión de otro lenguaje ya existente. El primer lenguaje utilizado a tal efecto fue el rematadamente conocido lenguaje, ligado intimamente a la programación lógica, estamos hablando de Prolog. A culla ampliación se le apodo en sus inicios Programación Lógica con Restricciones. Ambos comparten características como las conocidas variables lógicas (una vez que una variable es asignada a un valor, no puede ser cambiado), o el backtracking.
Lenguajes orientados al paradigma:
- CHIP V5 (Basado en Prolog, también existen bibliotecas en C y C++, proprietario)
- Ciao Prolog (Basado en Prolog, software libre: GPL/LGPL)
- Mozart ( Basado en Oz, software libre: X11)
- SICStus (Basado en Prolog, proprietario)
- B-Prolog (Basado en Prolog, proprietario)
- SWI-Prolog Un entorno Prolog que contiene varias librerías para soluciones con restricciones
- GNU Prolog (Basado en Prolog, software libre)
- ECLiPSe (Basado en Prolog, software libre)
La programación lineal usa una serie de funciones lineales con sistemas de ecuaciones lineales como restricciones para su desarrollo, un claro ejemplo lo encontramos en uno de nuestros libros recomendados de hoy.
Libros recomendados: Programación lineal, metodología y problemas