我有一个大学任务,我的目标是为在 Turbo Prolog 中创建的专家系统创建一个 GUI。有什么常见的方法可以做到这一点吗?或者有没有一种方法,例如,Java 应用程序可以调用 Prolog 应用程序并导入其结果?还是应该将我的应用程序移植到 Visual Prolog?提前致谢。
2 回答
嗯,有一个相当不错的XPCE,但我不能 100% 确定您是否能够在 Turbo Prolog 中使用它,或者您必须进行一些修改;但是,由于移植并非没有问题,我想您可以使用它。
这是关于 XPCE 的非常有用的(恕我直言)常见问题解答/指南
swi-prolog 页面中有关图形的其他一些选项:
直接访问图形 API 传统上,Prolog 社区中的人们围绕其系统的本机 (C) API 编写 Prolog 包装器。Xwip 是此类用于 Prolog 的 GUI 方法的一个重要示例。问题是这些 API 中的大多数都是相当低级的,并且需要做很多工作才能正确并自然地在 Prolog 中表示 API 的数据类型。外部 GUI 语言 一种更好、更流行的方法是使用为 GUI 开发而设计的外部语言。受欢迎的候选者是 Tk/Tcl、JPL/Java、Visual Basic 和 Delphi。Prolog 使用管道、嵌入或其他合适的通信机制连接到这些系统。使用 XPCE star.gif XPCE 从一开始就是在 Prolog 中为 GUI 开发而开发的。XPCE 有一个动态类型的面向对象内核。方法可以用任何语言定义。XPCE 预定义了大量的类,针对数据表示和图形。图形库允许对接口组件进行抽象描述,并可移植到 Win32 和 Unix/X11。
使用 XPCE,交互式 Prolog 应用程序可以完全用 Prolog 编写。XPCE 可用于(空间)高效的对象存储和应用程序的面向对象结构。从 XPCE-5 开始,原生 Prolog 数据可以与 XPCE/Prolog 定义的类一起传递和存储。
带有 Turbo Prolog 的 GUI 的“本机”方法是基于 DOS 的Borland 图形界面 (BGI)。该库本身与 MS Windows 不兼容,但您并未指明该应用程序的目标操作系统。
如果您的目标是 Windows 并想使用 BGI 图形,那么您可能会发现这个BGI 的 Windows 端口可用。
如果您以前从未在 Turbo Prolog 中使用过 BGI 调用,那么升级到Visual Prolog可能很有吸引力,PDC 在当前版本的 MS Windows 中维护它。用户界面的构建块在 Visual Prolog IDE 中非常方便。
补充:我曾经构建了一个仓库/物流系统的图形原型,使用 Turbo Prolog 和 BGI 调用显示特定物品在仓库地板上的位置。因此,我认为这可以为您的“大学作业”完成。尽管有几个 Prolog 实现可以与 Java 接口或用 Java 编写,但工作量比为 Java 编写一种调用 Turbo Prolog 的方法要少。 例如, GNU Prolog for Java是免费和开源的。
从 Turbo Prolog 转换到 ISO Prolog 并不是那么难,除非您使用的是外部数据库或 Turbo Prolog 固有的其他功能。基本上,您只需要去掉 Turbo Prolog 特有的域和谓词声明,并且您可能会拥有可以在各种 ISO Prolog 实现下测试和运行的东西。如果您的专家系统确实使用了外部数据库,您会发现转换为使用 Consult/ 1和/或assertz/1动态填充的内部数据库(事实子句)很有吸引力。