当前位置: 首页 > 面试题库 >

适用于Java的嵌入式Prolog解释器/编译器

殷建弼
2023-03-14
问题内容

我正在使用Java开发应用程序,该应用程序需要做一些复杂的逻辑规则推演,并将其作为功能的一部分。我想用Prolog或其他逻辑/约束编程语言(而不是Java)编写我的逻辑推论,因为我相信生成的代码将大大简化和维护。

我在Prolog上搜索了嵌入式Java实现,并找到了很多,每个文档都很少。我的(适度)选择标准是:

  • 应该可嵌入Java中(例如,可以与我的Java软件包捆绑在一起,而不需要在外部程序上进行任何本机安装)
  • 可从Java使用的简单界面(用于进行推论,检查结果和添加规则)
  • 至少提供一些有关如何使用它的示例
  • 不一定必须是Prolog,但是具有上述条件的其他逻辑/约束编程语言也将满足我的需求。

我有哪些选择,它们的优缺点是什么?


问题答案:

根据Wikipedia的介绍,以下版本的Prolog具有Java接口。我已经链接到它们的主页:

  • BProlog
  • ciaohome
  • SICStus序言
  • SWI序言
  • TuProlog(用Java实现)
  • LPA序言

祝您搜索愉快!



 类似资料:
  • 问题内容: 为什么我们说Java是一种编译和解释语言? (编译和解释)这样做有什么好处? 问题答案: Java在编译时被编译为中间的“字节码”。这与像C之类的语言在编译时被编译为机器语言相反。Java字节代码无法像编译的C代码那样直接在硬件上执行。相反,字节码必须在运行时由JVM(Java虚拟机)解释才能执行。像C这样的语言的主要缺点是,当编译该二进制文件时,该二进制文件将仅在一种特定的体系结构(

  • 问题内容: 我正在学习Java,以下内容对我来说有些混乱。我了解的是: Java编译器 →Java编译器仅将程序转换为文件,这意味着将我们的源代码转换为字节码(这是使Java平台独立的虚拟机(JVM)的操作码的列表)。 Java Interpreter →仅“解释”代码,而 没有 将其转换为本地机器代码。它将一条字节码的每条指令作为一条命令一一执行并执行,而不管同一条指令出现多少次。这就是为什么它

  • 我正在学习Java,下面的事情让我有点困惑。我的理解是: > Java编译器→Java编译器只是将程序转换为文件,这意味着将我们的源代码转换为字节码(它是虚拟机(JVM)的操作代码列表,使Java平台独立)。 Java解释器→只是“解释”代码,而不是将其转换为本机机器代码。它将字节码的每一条指令作为命令逐一执行并执行,而不管同一条指令发生多少次。这就是为什么它很慢,Java引入了JIT概念。 JI

  • 翻译的结果是什么?它会把高级语言变成汇编语言还是机器语言,即二进制代码? 如果是后者,这是否意味着解释语言与介绍集没有关系? 一种语言只能有一个口译员?是因为解释器不做任何优化,所以我们不需要找到更好的解释器吗?

  • 那么,让我看看我是否明白了这一点。 > 当我们说编译器和解释器之间的区别时,解释器将高级指令翻译成中间形式,然后执行。[我认为编译器也将高级指令翻译成中间形式,但此刻它生成目标代码而不是执行它,对吗?] 解释器一次读取一条指令或一行的源代码,将该行转换为机器代码并执行它。[解释器本身不会将代码转换为机器代码,它会使用ist自己的预编译函数评估指令(在解析之后)。例如,高级语言中的Add表达式将使用

  • 我对JIT编译器和解释器有些怀疑。从其定义开始: (翻译)来自维基百科: 在计算机科学中,解释器是一种计算机程序,它直接执行(即执行)用编程或脚本语言编写的指令,而无需事先将其批量编译成机器语言。解释器通常使用以下策略之一执行程序: 1)解析源代码并直接执行其行为 2)将源代码翻译成某种有效的中间表示形式,并立即执行该表示形式 3)显式执行由编译器(解释器系统的一部分)生成的存储预编译代码[1]