Как использовать Пролог из Java? - PullRequest
14 голосов
/ 29 ноября 2010

В контексте приложения Java / Eclipse я хотел бы использовать Prolog для конкретной задачи. Каковы доступные решения и инструменты для этого, а также связанные за и против?

Я могу запустить внешний интерпретатор Prolog, генерирующий результат в файле? Могу ли я использовать полную библиотеку Пролога Java (интерпретатор Пролога, реализованный в Java)? Я могу использовать библиотеку Java, предназначенную для связи с внешним интерпретатором Пролога?

Заранее спасибо за помощь,

Маню

Ответы [ 5 ]

10 голосов
/ 29 ноября 2010

Я бы попробовал GNU Prolog для Java . С сайта:

GNU Prolog для Java - это реализация ISO Prolog как библиотеки Java

7 голосов
/ 18 января 2012

Я использую tuProlog Официальный сайт , Хранилище кодов на Android. У них есть отличный встроенный Пролог в форме на 1 Jar File. Они тоже отзывчивы!

5 голосов
/ 17 апреля 2011

При рассмотрении многопоточных систем Prolog существуют и другие дополнительные соображения.Одно из желаний - разделить потоки и логические движки.Это было выражено здесь: http://www.cs.nmsu.edu/ALP/2011/03/concurrent-programming-constructs-and-first-class-logic-engines/

Есть некоторые системы Пролога, которые реализуют это разделение.Jekejeke Prolog также входит в число этих систем.Есть отчет (*), который показывает, как можно использовать это разделение.В различных сценариях мы видим, что «поток» предоставляется системой, внешней по отношению к логике:

  • Развертывание терминала: Поток является основным потоком Java.
  • Автономное развертывание:Поток - это поток AWT / Swing.
  • Развертывание апплета: Поток - это некоторый поток в браузере.
  • Развертывание сервлета: Поток происходит из пула веб-сервера.
  • Развертывание клиента: Поток являетсяAWT / Swing thread.

С наилучшими пожеланиями

http://www.jekejeke.ch/idatab/doclet/prod/en/docs/05_run/15_stdy/08_deploy/package.html

4 голосов
/ 29 ноября 2010

Быстрый Google возвращает список вариантов (увы, не обновляется в течение 5 лет).

Что касается плюсов / минусов - на мой взгляд
Собственный движок с привязками был бы худшим вариантом, когда дело доходит до распространения и интеграции, но может быть быстрее, чем нативные движки Java (но я бы хотел сначала доказательства).
Java-движок с API может привести к некоторой неловкости в точках интеграции, но его будет легко распространять.
Пролог к ​​компилятору байт-кода должен хорошо обрабатывать интеграцию между двумя языками и означать, что вы не отправляете скрипты пролога с двоичным файлом (может быть недостатком). Большой недостаток в этом - никто, похоже, не жив.
Пролог-подобный язык для компилятора байт-кода , такой же, как и выше, но некоторые все еще кажутся плавающими, также потребует знания нового языка.
Движок правил Java - Я бы посчитал это самым удачным решением. Вместо того, чтобы использовать два языка, кодируйте правила в стиле Java-y, но это зависит от того, насколько сложно правила выразить таким образом.

Второе, что нужно рассмотреть, - это проект, который все еще обновляется. Из моего быстрого Google мало кто. Prova и Mandarax являются двумя исключениями из последних опций.

2 голосов
/ 08 декабря 2011

Вы также можете взглянуть на JPL http://www.swi -prolog.org / FAQ / Java.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...