Сравнение реализаций Пролога
Следующее сравнение реализаций Пролога дает справку по относительным наборам функций и производительности различных реализаций Пролог языка программирования . Всестороннее обсуждение наиболее важных систем Пролога представлено в статье, опубликованной в юбилейном выпуске журнала «Теория и практика логического программирования» (TPLP), посвященном 50-летию Пролога. [1]
Портативность
[ редактировать ]Существуют реализации Пролога, с разным синтаксисом и разной семантикой (например, Visual Prolog). радикально отличающиеся [2] и подсообщества сформировались вокруг различных реализаций. [2]
Код, который строго соответствует основному языку ISO-Prolog, переносим между реализациями, совместимыми с ISO. Однако стандарт ISO для модулей является расширением, которое не было полностью принято в большинстве систем Пролога. [2] [1]
Факторы, которые могут отрицательно повлиять на переносимость, включают: использование ограниченной и неограниченной целочисленной арифметики, дополнительные типы, такие как строковые объекты, расширенные числовые типы (рациональные, комплексные), расширения функций, такие как Unicode , потоки и таблицы. [3] Использование библиотек, недоступных в других реализациях, и организация библиотек: [2]
В настоящее время способы распространения предикатов по библиотекам и встроенным системам сильно различаются. [...] К счастью, есть лишь несколько случаев, когда мы находим предикаты с одинаковым именем, но разной семантикой (например,
delete/3
)
Основные особенности
[ редактировать ]Платформа | Функции | Инструментарий | Механика Пролога | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Имя | ТЫ | Лицензия | Родная графика | Скомпилированный код | Юникод | Объектно-ориентированный | Собственный контроль ОС | Автономный исполняемый файл | C-интерфейс [а] | Java-интерфейс [а] | Интерактивный переводчик | Отладчик | Профилировщик кода | Синтаксис |
АллегроПролог | Юникс , Windows , Mac OS X | Собственный (доступна ограниченная бесплатная версия) | Да | Да | Да | Да, через Лисп | Да | Да, через Лисп | Да, через Лисп | Да | Да | Да, через Лисп | S-выражения. Полная интеграция с Common Lisp. | |
БПролог | Юникс , Windows , Mac OS X | Собственный (бесплатен для некоммерческого использования) | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да | ISO-Prolog, плюс обработка событий, CLP(FD) и составление таблиц | |
ПРИВЕТ | Юникс , Windows , Mac OS X | Лицензионная лицензия , LGPL | Да | Да | Да | Да | Да | Да | Да | Да | Да | ISO-Пролог плюс расширения | ||
DOS-Пролог [4] | MS-DOS | Собственный | Да | Да | Да | Да | Да | Да | Эдинбургский Пролог | |||||
Затмение | Linux , Windows , Солярис , macOS | МПЛ | Да | Да | Да | Да | Да | Да | Да | Расширенный Пролог, мультидиалект, включая ISO | ||||
GNU Пролог | Юникс , Windows , Mac OS X | Лицензионная лицензия , LGPL | Да | Да | Да | Да | Да | Да | ISO-Пролог | |||||
JIПролог | JVM , Андроид | AGPL (доступна коммерческая поддержка) | Да | Да | Да через Java | Да | Да через Java | Да | Да | Да | ISO-Пролог | |||
JLog [5] | JVM | лицензия GPL | Да | Да | Да | Да | ISO-Пролог | |||||||
JScriptLog [5] | Веб-браузер | лицензия GPL | Да | ISO-Пролог | ||||||||||
jТриолог [6] | JVM | LGPL | Да | Да | Да | Да | ISO-Пролог | |||||||
WIN-Пролог [7] | Окна | Собственный | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да | Эдинбургский Пролог с расширениями |
Открыть Пролог | MacOS | Бесплатное ПО | Да | |||||||||||
Поплог Пролог | Linux (32- и 64-разрядные версии), Unix , Windows | Бесплатно с открытым исходным кодом | Только через POP-11 , в Linux | Да | Да | Да | Да | Да | Да | Эдинбургский Пролог с интерфейсами к Poplog Common Lisp и Pop-11. | ||||
Скрайер Пролог | Линукс , Виндовс , МакОС | Лицензия БСД | Да | Да | ISO-Пролог | |||||||||
SICStus Пролог | Юникс , Линукс , Windows , macOS | Собственный | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да | ISO-Пролог |
Клубничный пролог | Винда , Юникс | Бесплатное ПО | Да | Да | Да | Да | Да | Не ISO-Пролог + расширения | ||||||
SWI-Пролог | Юникс , Линукс , Windows , macOS | Лицензия БСД | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да | ISO-Пролог, Эдинбургский Пролог | |
туПролог | JVM , Андроид | LGPL | Да | Да | Да | Да | Да | Да | ISO-Пролог | |||||
Визуальный Пролог | Окна | Бесплатное ПО | Да | Да | Да | Да | Да | Да | Да | Да | Да | |||
XSB Пролог | Linux , Windows , Солярис , macOS | LGPL | Да | Да | Да | Да | Да | Да | Да | Да | Да | ISO-Пролог, таблица WFS | ||
YAP-Prolog | Linux , Windows , Solaris , Mac OS X , HP-UX | GPL или Artistic (выбор пользователя) | Да | Да | Да | Да | Да | Да | Да | Да | Совместимость с Эдинбургом, ISO-Prolog, Quintus и SICStus Prolog |
Операционная система и веб-функции
[ редактировать ]связанные с ОС | Интернет-связанный | |||||||
---|---|---|---|---|---|---|---|---|
Имя | Условная компиляция | Розетки | Многопоточность | Таблица | HTTP-клиент | HTTP-сервер | HTML-парсер | РДФ Тройной магазин |
БПролог | Да | |||||||
ПРИВЕТ | Да | Да | Да | Да | Да | Да | Да | |
Затмение | Да | Да | Да | Да | Да | |||
GNU Пролог | Да | |||||||
WIN-Пролог | Да | Да | Да | Да | ||||
Скрайер Пролог | Да | Да | Да | Да | Да | |||
SICStus Пролог | Да | Да | Да | |||||
SWI-Пролог | Да | Да | Да | Да | Да | Да | Да | Да |
Визуальный Пролог | Да | Да | Да | Да | Да | Да | ||
XSB | Да | Да | Да | Да | Да | |||
YAP-Prolog | Да | Да | Да | Да |
Статический анализ
[ редактировать ]Имя | Тип проверки | Проверка определенности | Проверка шаблона звонка |
---|---|---|---|
ПРИВЕТ | Да | Да | Да |
GNU Пролог | |||
SICStus Пролог | Да | ||
SWI-Пролог | Да | ||
Визуальный Пролог | Да | Да | Да |
XSB | |||
YAP-Prolog |
Оптимизации
[ редактировать ]Имя | Оптимизация хвостового вызова | Удаление точки выбора | Обрезка окружающей среды | Индексация «точно в срок» |
---|---|---|---|---|
ПРИВЕТ | Да | Да | Да | ? |
Затмение | Да | Да | Да | несколько аргументов (время компиляции) |
GNU Пролог | Да | Да | Да | |
SICStus Пролог | Да | Да | Да | |
SWI-Пролог | Да | Да | Да | Да |
Визуальный Пролог | Да (время компиляции) | Да (время компиляции) | Н/Д | Н/Д (время компиляции) |
XSB | Да | Да | Да | ? |
YAP-Prolog | Да | Да | Да | Да |
Выпускать
[ редактировать ]Имя | Версия | Дата |
---|---|---|
АллегроПролог | 1.1.2 | 2018-12-12 |
БПролог | 8.1 | 2014-02-23 |
JIПролог | 4.1.7.1 | 2021-08-26 |
ПРИВЕТ | 1.22 | 2022-09-28 |
DOS-Пролог | 8.0 | |
Затмение | 7.1 | 2023-01-01 |
GNU Пролог | 1.5.0 | 2023-02-21 |
JLog | 1.3.6 | 2007-09-13 |
JScriptLog | 0.7.5 бета | 2007-09-10 |
jТриолог | ||
WIN-Пролог | 8.0 | 2022-07-14 |
Открыть Пролог | ||
Поплог Пролог | V16 | 2020-01-06 |
Скрайер Пролог | 0.9.3 | 2023-11-02 |
SICStus Пролог | 4.9.0 | 2023-12-18 |
Клубничный пролог | 6.1 | 2023-08-23 |
SWI-Пролог | 9.1.18 | 2023-11-01 |
туПролог | 2П-Кт 0.31.18 | 2023-10-24 |
Визуальный Пролог | 10, стр. 1000 | 2021-04-15 |
XSB Пролог | 5.0 | 2022-05-15 |
YAProlog | 7.1.0 | 2020-12-19 |
Тесты
[ редактировать ]- Проблемы бенчмаркинга: нечетное тестирование Пролога , различия в производительности. [8]
- Программное обеспечение для сравнительного анализа: старое , хорошее [ постоянная мертвая ссылка ] , Набор тестов Aquarius , (Bothe, 1990), [9] (Demoen et al. 2001) , описания тестов
- Результаты бенчмаркинга: B-Prolog , SICStus , XSB, [10] SICStus против Yap против hProlog [11]
- Результаты сравнительного анализа: обзор движков Java-пролога, проведенный Майклом Цейзингом.
- Результаты сравнительного анализа: ежегодный тест механизмов правил OpenRuleBench с открытым исходным кодом.
Примечания
[ редактировать ]- ^ Перейти обратно: а б Интерфейс C/Java также можно использовать для управления графикой и ОС.
Ссылки
[ редактировать ]- ^ Перейти обратно: а б Филипп Кёрнер; Майкл Леушел; Жоао Барбоза; Витор Сантос Коста; Вероника Даль; Мануэль В. Эрменегильдо; Хосе Ф. Моралес; Ян Вилемакер; Дэниел Диас; Сальвадор Абреу; Джованни Чиатто (ноябрь 2022 г.), «Пятьдесят лет Пролога и далее», Теория и практика логического программирования , 22 (6), doi : 10.1017/S1471068422000102 , hdl : 10174/33387
- ^ Перейти обратно: а б с д Вилемейкер, Дж.; Коста, СУДС (2011). «О переносимости приложений Пролога». Практические аспекты декларативных языков . Конспекты лекций по информатике. Том. 6539. стр. 69–83. CiteSeerX 10.1.1.1030.9396 . дои : 10.1007/978-3-642-18378-2_8 . ISBN 978-3-642-18377-5 .
- ^ Ян Вилемейкер и Витор Сантос Коста: Переносимость программ на Прологе: теория и тематические исследования . Семинар CICLOPS-WLPE 2010. Архивировано 16 июля 2010 г. в Wayback Machine .
- ^ «ДОС-Пролог 8.0» . Партнеры по логическому программированию . 5 ноября 2023 г.
- ^ Перейти обратно: а б «Домашняя страница JLog» . jlogic.sourceforge.net . Проверено 3 ноября 2023 г.
- ^ «Jtrolog — Java.net» . 13 ноября 2012 г. Архивировано из оригинала 13 ноября 2012 г. Проверено 3 ноября 2023 г.
- ^ «ВИН-Пролог 8.0» . Партнеры по логическому программированию . 5 ноября 2023 г.
- ^ Б. Демоен и П. Нгуен, О ненужных различиях в производительности между реализациями Пролога, Материалы коллоквиума по реализации систем ограничения и логического программирования (CICLOPS 2001)
- ^ Боте, К. (1990). «Набор тестов для пространства прологов» . Уведомления ACM SIGPLAN . 25 (12): 54–60. дои : 10.1145/122193.122197 .
- ^ Обзор производительности XSB (1993)
- ^ Демоен, Б.; Нгуен, Польша; Вандегинсте, Р. (2002). «Копирование сборки мусора для WAM: отмечать или не отмечать?». Логическое программирование . Конспекты лекций по информатике. Том. 2401. стр. 194–208. CiteSeerX 10.1.1.13.2586 . дои : 10.1007/3-540-45619-8_14 . ISBN 978-3-540-43930-1 .
Внешние ссылки
[ редактировать ]- Обзор систем Пролога Ульриха Ноймеркеля
- Оценка соответствия I: Синтаксис