站长网 资讯 逻辑编程语言处理SQL的局限性

逻辑编程语言处理SQL的局限性

谷歌为什么要推出这样一门新的编程语言? 有道是,数据是新世纪的石油。 SQL作为处理数据的通用语言,因为它基于自然语言的设计,好理解好入门,已流行了很多年,但,也并非完美无缺: 没有将逻辑分成小块的设计 没有模块和导入的概念 更没有高级点的构造

谷歌为什么要推出这样一门新的编程语言?

有道是,“数据是新世纪的石油”。

SQL作为处理数据的通用语言,因为它基于自然语言的设计,好理解好入门,已流行了很多年,但,也并非完美无缺:

没有将逻辑分成小块的设计

没有“模块”和“导入”的概念

更没有高级点的构造(例如函数间的传递)

这就导致SQL对抽象的支持非常有限,就更不用说还要去维护那动辄上百行的语句了。

有没有好的解决方案呢?

市面上开发了很多可供大家选择的数据库查询语言和相应的库。

其中,逻辑编程语言最能解决SQL的局限性。

逻辑编程语言Logica

Logica就是这样一门逻辑编程语言。

何为逻辑编程?

逻辑编程是种编程典范,它设定答案须符合的规则来解决问题,而非设定步骤来解决问题,过程是事实+规则=结果。

Logica进一步扩展了经典的逻辑编程语法,最显著的是使用聚合,这也是这个名字的来源:Logic + Aggregation (聚合)。

Logica继承自Yedalog(早期谷歌开发的一种语言),是一种类似数据日志(Datalog-like)的逻辑编程语言。Logica代码可以编译成SQL,可在谷歌BigQuery上运行(也支持PostgreSQL和SQLite):

支持SQL所缺乏的简洁和可重用的抽象机制

支持模块和导入

甚至使测试查询变得不再困难!

到底好不好用,上手体现便知结果。

下面是一个查找小于 30 的质数的具体示例:

# Define natural numbers from 1 to 29. 

 

N(x) :- x in Range(30); 

 

# Define primes. 

 

Prime(prime: x) :- 

 

N(x), 

 

x > 1, 

 

~( 

 

N(y), 

 

y > 1, 

 

y != x, 

 

Mod(x, y) == 0

 

); 

运行结果:

$ logica primes.l run Prime 

 

+——-+ 

 

| prime | 

 

+——-+ 

 

| 2 | 

 

| 3 | 

 

| 5 | 

 

| 7 | 

 

| 11 | 

 

| 13 | 

 

| 17 | 

 

| 19 | 

 

| 23 | 

 

| 29 | 

本文来自网络,不代表站长网立场,转载请注明出处:https://www.zwzz.com.cn/html/biancheng/zx/2021/0527/6925.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部