ResumenRecientemente, esta revista ha publicado una excelente monografía, [65], dedicada a los problemas de satisfacción con restricciones. La monografía cubre muchos de los aspectos relacionados con estos problemas pero obvia unárea tradicionalmente muy importante en la comunidad de las restricciones como es la integración de restricciones en los lenguajes de programación declarativos (especialmente los lógicos).Este artículo describe el estado-del-arte de la programación declarativa con restricciones (PDC) con especiaĺ enfasis en la integración de restricciones en los lenguajes de programación lógicos. El artículo está dirigido tanto a personas con conocimientos de PDC como a aquellos interesados en conocerla, y cubre sus orígenes históricos, los fundamentos teóricos y las instancias más populares dependientes del dominio de computación.Palabras clave: Satisfacción de Restricciones, Programación Lógica, Programación Funcional, Resolutor.
IntroducciónRecientemente, esta revista ha publicado una estupenda monografía [65] enfocada sobre los problemas de satisfacción con restricciones (CSP, Constraint Satisfaction Problem) y en la cual se abordan las técnicas clásicas empleadas para su resolución y, más particularmente, otras técnicas usadas sobreáreas específicas de aplicación (tales como la diagnosis, las bases de datos o la recuperación de información). La monografía cubre muchos de los aspectos relacionados con los CSPs pero obvia unárea muy importante como es la integración de restricciones en los lenguajes declarativos (especialmente los lógicos). En realidad, la programación lógica con restricciones (CLP, Constraint Logic Programming) [110,179] es uno de los campos de investigación más activos en la comunidad de las restricciones puesto que está directamente relacionado con el modelado (a alto nivel) de soluciones a los problemas de satisfacción con restricciones; más aún, como ya fue apuntado en [54][capítulo 15], uno no puede (ni debe) asumir que todas las restricciones estarán disponibles al comienzo del proceso de búsqueda de las soluciones y el usuario podría querer construir el CSP a resolver de forma incremental y "representar las restricciones a través de fórmu-las pertenecientes a un cierto lenguaje de programación en vez de representaréstas mediante conjuntos de tuplas de valores". Este aspecto no fue considerado en [65], yésa es precisamente la razón que ha generado este artículo.Este artículo describe el estado-del-arte de la programación declarativa con restricciones, con especialénfasis en la programación lógica con restricciones ya que la naturaleza relacional de las restricciones hace que los lenguajes que guardan algún componente lógico sean más adecuados para la integración de las mismas.