GUI для приложения Turbo Prolog - PullRequest
       78

GUI для приложения Turbo Prolog

0 голосов
/ 17 января 2012

У меня есть университетское задание, где моя цель - создать графический интерфейс для экспертной системы, созданной в Turbo Prolog. Есть ли какой-нибудь общий способ сделать это? Или есть способ, например, чтобы приложение Java могло вызывать приложение Prolog и импортировать его результаты? Или я должен перенести свое приложение на Visual Prolog? Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 17 января 2012

Ну, есть XPCE , что довольно неплохо, но я не уверен на 100%, сможете ли вы использовать его в Turbo Prolog или вам придется внести некоторые изменения;однако, поскольку портирование не исключено, я думаю, вы могли бы его использовать.

Этот является очень полезным (imho) FAQ / Руководством по XPCE

Некоторые другие вариантысо страницы swi-prolog о graphics :

Прямой доступ к графическому API Традиционно, люди в сообществе Prolog написали обертки Prolog вокруг собственного (C) API своей системы.Xwip - важный пример этого класса графического интерфейса для Prolog.Проблема в том, что большинство этих API довольно низкоуровневые, и требуется много работы, чтобы правильно и естественно представить типы данных API в Prolog.Внешний язык GUI Лучший и более популярный подход - использовать внешний язык, разработанный для разработки GUI.Популярными кандидатами являются Tk / Tcl, JPL / Java, Visual Basic и Delphi.Пролог подключается к этим системам с помощью труб, встраивания или других подходящих механизмов связи.Использование XPCE star.gif XPCE изначально разрабатывался для разработки графического интерфейса в Прологе.XPCE имеет динамически типизированное объектно-ориентированное ядро.Методы могут быть определены на любом языке.XPCE предопределяет большое количество классов, нацеленных как на представление данных, так и на графику.Графическая библиотека обеспечивает абстрактное описание компонентов интерфейса и переносима на Win32 и Unix / X11.

Используя XPCE, интерактивные приложения Prolog могут быть полностью написаны на Prolog.XPCE может использоваться для (пространственно) эффективного хранения объектов и объектно-ориентированного структурирования вашего приложения.Начиная с XPCE-5, собственные данные Prolog могут передаваться и храниться с классами, определенными в XPCE / Prolog.

0 голосов
/ 17 января 2012

«Родным» подходом для графического интерфейса с Turbo Prolog был DOS-графический интерфейс Borland (BGI) .Эта библиотека сама по себе несовместима с MS Windows, но вы не указываете, на какую операционную систему вы нацеливаетесь с помощью этого приложения.

Если вы ориентируетесь на Windows и хотите использовать графику BGI, возможно, вы 'Вы найдете этот Windows-порт BGI пригодный для использования.

Если вы никогда ранее не использовали вызовы BGI в Turbo Prolog, то, возможно, будет интересно обновить его до Visual Prolog , который PDC поддерживает с текущими выпусками MS Windows.Строительные блоки для пользовательского интерфейса находятся под рукой в ​​Visual Prolog IDE.

Добавлено: Однажды я построил графический прототип складской / логистической системы, отображая, где конкретные элементырасположены на складе, используя вызовы Turbo Prolog и BGI.Так что это может быть сделано, я думаю, для вашего "университетского задания".Меньше работы, чем придумывание Java для вызова Turbo Prolog, хотя есть несколько реализаций Prolog, которые либо взаимодействуют, либо написаны на Java. GNU Prolog для Java является бесплатным и открытым исходным кодом, например.

Преобразование из Turbo Prolog в ISO Prolog не так уж сложно, если вы не используете внешнюю базу данных или другие функции, присущиеТурбо Пролог.По сути, вам просто нужно удалить домен и предикатные объявления, характерные для Turbo Prolog, и у вас, скорее всего, будет что-то, что можно протестировать и запустить в широком диапазоне реализаций ISO Prolog.Если ваша экспертная система использует внешнюю базу данных, вы сочтете привлекательным преобразование во внутреннюю базу данных (фактические положения), которая динамически заполняется с помощью consult / 1 и / или assertz / 1 .

...