LINUX.ORG.RU

Существует.

anonymous
()

SWI Prolog, например. Именно так я его и использовал: подключал к внешней программе. Там можно было двояко поступать: либо встраивать Prolog в прграмму, либо создавать внешние функции и импортировать их в Prolog.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Да, и там (в SWI Prolog) есть API, который позволяет из внешней программы конструировать клаузальные формы и добавлять их в базу данных Пролога прямо в процессе работы.

P.S. Очень давно не смотрел, как там дела. Последний раз его щупал десять лет назад. И SWI был очень популярной реализацией.

Zubok ★★★★★
()
Ответ на: комментарий от Reset

Перечитал доку к gprolog'у, так и не нашёл в ней возможность создавать базу знаний в самом си. Это вообще возможно или не надеяться?

А вот Swi, увы, не тянет - согласно немногочисленным тестам тормозной он, что важно, ибо пролог сам по себе небыстр.

anonymous
()
Ответ на: комментарий от anonymous

>А вот Swi, увы, не тянет - согласно немногочисленным тестам тормозной он, что важно, ибо пролог сам по себе небыстр.

Во-первых, тест тесту рознь. Противоречивых тестов по сети ходит множество относительно многих программных продуктов. Во-вторых, даже если и поверить тесту, у тебя такая задача, которая спотыкается на скорость? Ты бы испытал сначала сам, прежде чем делать суждения. SWI имеет необходимую функциональность для встраивания, что имеет далеко не каждая реализация Пролога. А то вдруг окажется, что среди встраиваемых, он самый быстрый. Рекомендую не выносить суждения заранее. Вот.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

>Противоречивых тестов по сети ходит множество относительно многих программных продуктов.

По сравнению ,к примеру, с gprolog и yap, он тормозит на всех нагуглённых тестах. А до аквариуса ему вообще ещё расти и расти. Увы.

>Во-вторых, даже если и поверить тесту, у тебя такая задача, которая спотыкается на скорость?

Да, планируется создание большой базы знаний. И не хотелось бы, чтобы рано или поздно она начала тормозить. Пролог сам по себе и так тормозной, а в SWI ещё и тормоза в реализации. Я уже давно выбрал для себя gprolog как почти самый быстрый из свободных, но увы, у него в доке неопределённость по плюсам и по возможности создавать БЗ внутри них.

>А то вдруг окажется, что среди встраиваемых, он самый быстрый.

А вот это, увы, проверить пока не могу, но и гадать тоже не есть выход.

anonymous
()
Ответ на: комментарий от anonymous

Еще есть вариант. Запасной. Можно использовать Prolog, реализованный на Common Lisp. Ты получаешь не только Prolog, но и Lisp. А получаешь REPL, в который можешь добавлять знания в любой момент в процессе работы. REPL -- неотъемлемая часть системы. Причем методы встраивания могут быть весьма разными. А можно и вообще все делать на Common Lisp, а реализацию Prolog на нем использовать, как одну из подсистем. Весьма мощный иинтересный подход.

Реализация Prolog на Common Lisp есть в книге Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp, написанной тов. Peter Norvig, который ныне является Director of Reasearch в Google. На основе его работы компания Franz выпустила Allegro Prolog, который работает поверх Allegro Common Lisp.

Zubok ★★★★★
()
Ответ на: комментарий от anonymous

Там есть Си интерфейс, Си++ обертку пиши сам. Команды типа assert gprolog позволяет из Си вызывать? Что-то сомневаюсь, что нет.

Reset ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.