Введение

Система логического программирования с ограничениями ECLiPSe – это программная система для разработки и развертывания приложений логического программирования с ограничениями, например, в таких областях, как оптимизация, планирование, составление расписаний, распределение ресурсов, организация перевозок и т. д. Она также подходит для обучения большинству аспектов решения комбинаторных задач, например, моделированию задач, программированию с ограничениями, математическому программированию и методам поиска. Система включает в себя библиотеки решателей ограничений, язык моделирования и управления высокого уровня (являющийся расширением Prolog), интерфейсы к сторонним решателям, интегрированную среду разработки и интерфейсы для встраивания в другие среды. ECLiPSe разрабатывалась до 1995 года в Европейском исследовательском центре компьютерной индустрии (ECRC) в Мюнхене, а затем до 2005 года в Центре планирования и контроля ресурсов Имперского колледжа Лондона (IC Parc). Она была приобретена компанией Cisco Systems. В сентябре 2006 года система была выпущена как программное обеспечение с открытым исходным кодом под лицензией, эквивалентной Mozilla Public License, и в настоящее время размещается на SourceForge.

Язык

Язык ECLiPSe во многом обратно совместим с Prolog и поддерживает различные диалекты, включая ISO Prolog. Благодаря своей декларативности, он может использоваться как для моделирования и описания задач, так и в качестве языка программирования общего назначения. Помимо базовых типов данных Prolog, доступны следующие: строки, целые и рациональные числа произвольной точности, а также интервалы с плавающей точкой. Поддерживаются также синтаксис массивов и структуры с именованными полями, которые особенно полезны при моделировании ограничений. Логическая конструкция итерации позволяет избежать использования большинства простых шаблонов рекурсии. ECLiPSe предоставляет широкие возможности и включает библиотеку решателя Gecode. Библиотеки совместимости для ISO Prolog и других диалектов Prolog (C Prolog, Quintus, SICStus, SWI Prolog) обеспечивают возможность повторного использования библиотек, написанных для этих диалектов. В дистрибутив также включены другие полезные библиотеки, в том числе ряд популярных библиотек с открытым исходным кодом.

Архитектура системы

Система включает инкрементальный компилятор, который преобразует исходный код в код виртуальной машины. Компилятор оптимизирует выбор индексов, порядок унификации, подстановку встроенных конструкций управления и может учитывать информацию о модах. Среда выполнения реализует виртуальную машину, автоматическое управление памятью со сборкой мусора для стеков и словарей, обработку событий и выполнение, управляемое данными. Версии ECLiPSe поддерживают OR-параллелизм. Компоненты ECLiPSe могут быть интегрированы в программное обеспечение через низкоуровневый интерфейс C или C++ либо через высокоуровневые интерфейсы к Java и Tcl.