似乎编写声明式 SQL
在命令式编程中很受欢迎。但是,编写声明式代码 似乎也Prolog
可以节省很多复杂性,但这并不是很常见。
对于这种明显的优先于Prolog的SQL,是否有历史的先例?
如果原因是命令式语言缺乏本机支持,那么是否有可能回答为什么语言创建者最初对本机支持没有帮助Prolog
呢?
提供一些具体示例:
示例1:
评估贷款申请可能只需要输入几行代码Prolog
,就像SELECT/JOIN
查询只需要输入几行代码一样SQL
,但似乎好处不如SQL
。
示例2
这是Prolog中的另一个示例问题和解决方案。以下约束逻辑程序代表约翰作为老师的历史的简化数据集:
teaches(john, hardware, T) :- 1990 ≤ T, T < 1999.
teaches(john, software, T) :- 1999 ≤ T, T < 2005.
teaches(john, logic, T) :- 2005 ≤ T, T ≤ 2012.
rank(john, instructor, T) :- 1990 ≤ T, T < 2010.
rank(john, professor, T) :- 2010 ≤ T, T < 2014.
以下目标条款查询数据集,以查找约翰既教授逻辑又是教授的时间:
:- teaches(john, logic, T), rank(john, professor, T).
结果:
2010 ≤ T, T ≤ 2012.
在上面的示例中,很容易SQL
获得相同的结果。但是,假设您在中包含此数据Array
。然后,使用获得相同的结果并不容易SQL
。对于将数据存储在数组中的情况,我相信Prolog代码将更易于编写和维护。