首页 > 解决方案 > Java中有“逻辑编程”的元素吗?

问题描述

近年来,“函数式编程”的许多元素已经进入 Java,尤其是 Java 8。我想到了 lambda 表达式、函数式接口、Java 泛型、流接口、可选类等。

我的问题是,是否还有任何新的类/接口/语法已添加到 Java 中并源于“逻辑编程”的范式?或者是否有计划这样做?

(参见例如这里对这两种方法的比较)

标签: javalogic-programming

解决方案


逻辑编程语言(例如 Prolog)允许将程序编写为真理陈述和它们之间的关系,因此该语言的实现本质上是一种算法,它搜索满足所有程序声明性陈述的解决方案。

因此,Java 要支持“开箱即用”的逻辑编程,标准库必须包含这样的搜索算法。据我所知,事实并非如此。但是,有第三方库可以这样做;谷歌搜索“ Java 逻辑编程库”会产生几个(同样的约束编程库。)

这些库通常将语句和关系表示为 Java 对象,并包括一个算法(或可能有几个可供选择的算法)的实现,以便搜索解决方案。考虑到这些库的可用性、复杂性和多样性,Java 标准库中似乎不太可能添加等价的东西。


推荐阅读