Articulo de referencia

Eclipse

Centre for Planning and Resource Control, [[Imperial College London]] (IC-Parc) [[Cisco Systems]]"},"released":{"wt":"{{Start date and age|1992}}"},"latest release version":{"wt...

ECLiPSe es un sistema de software para el desarrollo y despliegue de aplicaciones de programación lógica con restricciones , por ejemplo, en las áreas de optimización , planificación , programación , asignación de recursos , elaboración de horarios, transporte, etc. También es adecuado para la enseñanza de la mayoría de los aspectos de la resolución de problemas combinatorios , por ejemplo, modelado de problemas , programación con restricciones , programación matemática y técnicas de búsqueda . [ 1 ] Contiene bibliotecas de resolución de restricciones , un lenguaje de modelado y control de alto nivel (un superconjunto de Prolog ), interfaces para solucionadores de terceros, un entorno de desarrollo integrado e interfaces para su integración en entornos anfitriones.

ECLiPSe se desarrolló hasta 1995 en el Centro Europeo de Investigación de la Industria Informática (ECRC) en Múnich , y posteriormente hasta 2005 en el Centro de Planificación y Control de Recursos del Imperial College de Londres (IC-Parc). Fue adquirido por Cisco Systems . En septiembre de 2006, se lanzó como software de código abierto bajo una licencia equivalente a la Licencia Pública de Mozilla , y actualmente se encuentra alojado en SourceForge.

Idioma

El lenguaje ECLiPSe [ 2 ] es en gran medida compatible con versiones anteriores de Prolog y admite diferentes dialectos, incluido ISO Prolog . Debido a su naturaleza declarativa , puede utilizarse tanto como lenguaje de modelado para describir problemas como lenguaje de programación de propósito general .

Además de los tipos de datos básicos de Prolog, están disponibles las siguientes opciones: cadenas de caracteres , números enteros y racionales de precisión ilimitada e intervalos de coma flotante . También se admiten la sintaxis de matrices y las estructuras con nombres de campo, lo que resulta especialmente útil en el modelado de restricciones.

Una construcción de iteración lógica [ 3 ] elimina la necesidad de la mayoría de los patrones de recursión simples .

ECLiPSe proporciona funcionalidades completas [ 2 ] para implementar un comportamiento de control basado en datos . Estas incluyen cláusulas de retardo declarativas, así como primitivas para el control metaprogramado, como la suspensión explícita de objetivos, funciones de activación flexibles y prioridades de ejecución. Junto con el tipo de datos de variable con atributos , esto constituye la clave para muchas extensiones del lenguaje de programación lógica básico , incluyendo toda la funcionalidad basada en restricciones. El sistema llama a manejadores de eventos definibles por el usuario cuando encuentra variables con atributos en ciertos contextos, por ejemplo, la unificación.

El sistema de módulos controla la visibilidad de los predicados, los almacenes no lógicos, las transformaciones de origen y la configuración de la sintaxis. Las interfaces de los módulos se pueden ampliar y restringir, y se pueden combinar módulos escritos en diferentes dialectos de lenguaje dentro de una misma aplicación.

Los programas pueden contener comentarios estructurados a partir de los cuales se puede generar documentación de referencia.

Bibliotecas

ECLiPSe proporciona varias bibliotecas de solucionadores de restricciones que pueden utilizarse en programas de aplicación:

Restricciones aritméticas sobre dominios finitos, restricciones de conjuntos finitos, propagación generalizada, razonamiento de intervalos sobre restricciones no lineales, interfaces con solucionadores simplex externos, reglas de manejo de restricciones (CHR) y más.

Otras bibliotecas implementan métodos de búsqueda como ramificación y acotación , búsqueda basada en reparación y búsqueda de discrepancias limitadas.

ECLiPSe se conecta con solucionadores externos, en particular con los solucionadores de programación lineal y de enteros mixtos COIN-OR , CPLEX , Gurobi y Xpress-MP , [ 4 ] y la biblioteca de solucionadores Gecode .

Las bibliotecas de compatibilidad para ISO Prolog [ 5 ] y otros dialectos de Prolog (C-Prolog, Quintus , SICStus , SWI-Prolog ) permiten la reutilización de bibliotecas escritas en esos dialectos.

La distribución incluye otras bibliotecas de utilidades, entre ellas varias populares de dominio público .

Arquitectura del sistema

El sistema incluye un compilador incremental que traduce el código fuente a código de máquina virtual . El compilador optimiza la selección de índices, el orden de unificación, la inserción de estructuras de control y puede tener en cuenta la información de modo.

El sistema de tiempo de ejecución implementa la máquina virtual , la gestión automática de memoria con recolección de basura de pilas y diccionarios, el manejo de eventos y la ejecución basada en datos. Las versiones de ECLiPSe implementan paralelismo OR .

Los componentes de ECLiPSe se pueden integrar en el software mediante una interfaz de bajo nivel en C o C++ , o mediante interfaces de alto nivel para Java y Tcl .

Aplicaciones industriales

Podría decirse que la aplicación industrial de Prolog más grande y compleja fue el servidor de juegos de casino en línea del Global Player Casino. Este utilizaba Prolog como lenguaje de implementación estándar, con más de 157.000 líneas de código Prolog ejecutándose en ECLiPSe. [ 1 ]

Originalmente, se planeó usar Prolog solo como lenguaje de prototipado rápido y, una vez verificado el diseño principal, reescribirlo en C. Sin embargo, resultó que no fue necesario reescribir el código en C; el programa en Prolog logró procesar decenas de miles de solicitudes HTTP por segundo. Solo necesitaba una interfaz con la base de datos comercial Informix; el primer prototipo ni siquiera requería eso.

El servidor implementó varias versiones de ruleta y blackjack para un jugador y multijugador, diversos tipos de máquinas tragamonedas y todas las operaciones con tarjeta de crédito. Incluso organizaba torneos de blackjack multijugador semanales. Desafortunadamente, aunque a los jugadores les encantaban todas estas novedades, la administración del casino no supo promocionarlas adecuadamente y, por lo tanto, el casino quebró en 2007. [ 6 ]

Las razones del éxito de Prolog como lenguaje de implementación industrial fueron:

  • Resultó que Prolog es casi ideal para la creación rápida de prototipos.
  • El programa es su propia especificación ejecutable.
  • Siempre se dispone de una base de datos relacional interna.
  • Empezar con un prototipo muy simple lleva como mucho horas, no semanas.
  • Se pueden añadir nuevas funcionalidades de forma incremental, hasta alcanzar el nivel requerido.

Véase también

Referencias

  1. 1 2 "Sitio web de ECLiPSe" . eclipseclp.org .
  2. 1 2 Schimpf, Joachim; Shen, Kish (2012). "ECLiPSe - de LP a CLP". Theory and Practice of Logic Programming . 12 ( 1– 2): 127– 156. arXiv : 1012.4240 . doi : 10.1017/S1471068411000469 . S2CID 11827081 . 
  3. Schimpf, Joachim (1 de agosto de 2002). Bucles lógicos (PDF) . Programación lógica, 18.ª Conferencia Internacional, ICLP 2002, Copenhague, Dinamarca, 29 de julio - 1 de agosto de 2002. Actas: Springer-Verlag. págs. 224–238 . ISBN  978-3-540-45619-3.{{cite book}}: CS1 mantenimiento: ubicación ( enlace )
  4. Shen, K.; Schimpf, J. (2005). "Eplex: Aprovechamiento de solucionadores de programación matemática para la programación lógica con restricciones". Principios y práctica de la programación con restricciones - CP 2005. Notas de clase en informática. Vol. 3709. Principios y práctica de la programación con restricciones - CP 2005: 11.ª Conferencia Internacional, CP 2005, Sitges: Springer. págs. 622–636 . doi : 10.1007/11564751_46 . ISBN   978-3-540-32050-0.{{cite book}}: CS1 mantenimiento: ubicación ( enlace )
  5. "Declaración de conformidad ISO de ECLiPSe" . eclipseclp.org .
  6. "Un actor global cierra sus puertas" . www.gpwa.org . Consultado el 7 de julio de 2026 .
  • ECLiPSe en SourceForge
  • Programación lógica con restricciones usando ECLiPSe , libro de texto de Krzysztof Apt y Mark Wallace.
  • Una guía rápida y sencilla para la programación lógica con restricciones mediante ECLiPSe , libro de texto de Antoni Niederliński.
  • Sitio web de aprendizaje electrónico de ECLiPSE (con videotutoriales)