Сравнение реализаций Prolog - Comparison of Prolog implementations

Следующее Сравнение реализаций Prolog предоставляет ссылку на относительные наборы функций и производительность различных реализаций Пролог компьютер язык программирования.

Портативность

Есть Пролог реализации которые радикально отличаются, с другим синтаксисом и другой семантикой (например, Visual Prolog)[1] и суб-сообщества развились вокруг различных реализаций.[1]

Код, который строго соответствует базовому языку ISO-Prolog, переносится между ISO-совместимыми реализациями. Однако стандарт ISO для модулей никогда не был принят большинством разработчиков Prolog.[1]

Факторы, которые могут отрицательно повлиять на переносимость, включают: использование ограниченной и неограниченной целочисленной арифметики, дополнительные типы, такие как строковые объекты, расширенные числовые типы (рациональные, сложные), расширения функций, такие как Unicode, темы и столы.[2] Использование библиотек, недоступных в других реализациях и организации библиотеки:[1]

В настоящее время способы распространения предикатов по библиотекам и встроенным системам сильно различаются. [...] К счастью, есть лишь несколько случаев, когда мы находим предикаты с одинаковым именем, но разной семантикой (например, удалить / 3)

Основные особенности

ПлатформаФункцииИнструментарийПролог Механика
ИмяОперационные системыЛицензияРодная графикаСкомпилированный кодUnicodeОбъектно-ориентированныйРодной контроль ОСАвтономный исполняемый файлC Интерфейс[3]Интерфейс Java[3]Интерактивный переводчикОтладчикПрофайлер кодаСинтаксис
BPrologUnix, Windows, Mac OS XБесплатно для некоммерческого использованиядадададададададададаISO-Prolog, плюс обработка событий, CLP (FD) и таблинг
JIPrologJVM, AndroidУсловно-бесплатное ПО / Коммерческие и AGPLдадаДа через JavaдаДа через JavaдададаISO-Prolog
ЧаоUnix, Windows, Mac OS XGPL, LGPLдададададададададаISO-Prolog, плюс расширения
ДОС-ПРОЛОГMS-DOSУсловно-бесплатное ПОдадададададаЭдинбургский пролог
ЗатмениеLinux, Windows, Солярис, macOSMPLдададададададаРасширенный пролог, мультидиалектность, включая ISO
GNU PrologUnix, Windows, Mac OS XGPL, LGPLдадададададаISO-Prolog
Jekejeke PrologJVM, AndroidОценка распределениядадададададададаISO-Prolog, Java API
JLogJVMGPLдадададаISO-Prolog
JScriptLogВеб-браузерGPLдаISO-Prolog
jTrologJVMLGPLдадададаISO-Prolog тесты[постоянная мертвая ссылка ]
LPA-PROLOGWindowsКоммерческийдададададададададададаЭдинбургский Пролог с расширениями
Открыть ПрологMac OSБесплатное ПОда
Поплог ПрологLinux (32- и 64-битные), Unix, WindowsБесплатный открытый исходный кодТолько через ПОП-11, в LinuxдадададададаЭдинбургский Пролог, с интерфейсами для Poplog Common Lisp и Pop-11
SICStus PrologUnix, Linux, Windows, macOSКоммерческийдададададададададададаISO-Prolog
Клубничный прологWindows, UnixБесплатное ПО, КоммерческаядададададаНе расширения ISO-Prolog +
SWI-PrologUnix, Linux, Windows, macOSЛицензия BSDдадададададададададаISO-Prolog, Эдинбургский Пролог
tuPrologJVM, AndroidLGPLдадададададаISO-Prolog
Визуальный прологWindowsБесплатное ПО, Коммерческаядадададададададада
XSB PrologLinux, Windows, Солярис, macOSLGPLдададададададададаISO-Prolog, табличный WFS
YAP-PrologLinux, Windows, Солярис, Mac OS X, HP-UXGPL или Художественный (выбор пользователя)дадададададададаЭдинбург, совместимость с ISO-Prolog, Quintus и SICStus Prolog

Операционная система и функции, связанные с Интернетом

Связанные с Интернетом
ИмяУсловная компиляцияРозеткиМногопоточностьТаблингHTTP-клиентHTTP серверHTML-парсерRDF Тройной магазин
BPrologда
Чаодадададададада
Затмениедадададада
GNU Prologда
Jekejeke Prologдадададада
LPA-Prologдададада
SICStus Prologдадада
SWI-Prologдададададададада
Визуальный прологдададададада
XSBдадададада
YAP-Prologдададада

Статический анализ

ИмяПроверка типовПроверка детерминацииПроверка шаблонов вызовов
Чаодадада
GNU Prolog
Jekejeke Prolog
SICStus Prologда
SWI-Prologда
Визуальный прологдадада
XSB
YAP-Prolog

Оптимизация

ИмяОптимизация хвостового вызоваВыбор точки выбораОбрезка окружающей средыСвоевременное индексирование
Чаодадада?
Затмениедададамультиаргумент (время компиляции)
GNU Prologдадада?
Jekejeke PrologДа (время выполнения)Да (время выполнения)Да (время выполнения)да
SICStus Prologдадада
SWI-Prologдададада
Визуальный прологДа (время компиляции)Да (время компиляции)Нет данныхN / A (время компиляции)
XSBдадада?
YAP-Prologдададада

Релиз

ИмяВерсияДата
BProlog8.12014-02-23
JIProlog4.1.6.12018-03-17
Чао1.19.02020-03-21
ДОС-ПРОЛОГ6.0
Затмение7.0_542020-02-26
GNU Prolog1.4.52018-07-14
Jekejeke Prolog1.3.12018-11-02
JLog1.3.62007-09-13
JScriptLog0.7.5 бета2007-09-10
jTrolog
LPA-PROLOG7.02019-12-19
Открыть Пролог
Поплог ПрологV15.652015-10-14
SICStus Prolog4.6.02020-05-04
Клубничный пролог3.0 Бета 42013-12-10
SWI-Prolog8.2.32020-11-23
tuProlog3.2.12017-02-14
Визуальный пролог9.0, сборка 9022019-04-26
XSB Пролог3.82017-10-29
YAProlog6.3.32013-01-21

Контрольные точки

Рекомендации

  1. ^ а б c d Wielemaker, J .; Коста, В. Т. С. (2011). «О переносимости приложений Prolog». Практические аспекты декларативных языков. Конспект лекций по информатике. 6539. п. 69. CiteSeerX  10.1.1.1030.9396. Дои:10.1007/978-3-642-18378-2_8. ISBN  978-3-642-18377-5.
  2. ^ Ян Вилемакер и Витор Сантос Коста: Переносимость программ на Прологе: теория и тематические исследования. CICLOPS-WLPE Workshop 2010.
  3. ^ а б Интерфейс C / Java также может использоваться для управления графикой и ОС.
  4. ^ Б. Демоен и П. Нгуен, О ненужных различиях в производительности между реализациями Пролога, Труды коллоквиума по реализации ограничений и систем логического программирования (CICLOPS 2001)
  5. ^ Боте, К. (1990). "Набор тестов пролога пространства". Уведомления ACM SIGPLAN. 25 (12): 54–60. Дои:10.1145/122193.122197.
  6. ^ Резюме производительности XSB (1993)
  7. ^ Demoen, B .; Nguyen, P.L .; Вандегинсте, Р. (2002). «Копирование сборки мусора для WAM: отмечать или не отмечать?». Логическое программирование. Конспект лекций по информатике. 2401. С. 194–208. CiteSeerX  10.1.1.13.2586. Дои:10.1007/3-540-45619-8_14. ISBN  978-3-540-43930-1.

внешняя ссылка