澎湃Logo
下载客户端

登录

  • +1

谷歌发布新编程语言,专治SQL各种“不服”

2021-04-21 18:58
来源:澎湃新闻·澎湃号·湃客
字号

丰色 发自 凹非寺

量子位 报道 | 公众号 QbitAI

天下苦SQL久矣。

写个查询语句而已,动不动就上百行……

不过谷歌新推出的这个逻辑编程语言,对于“SQL党”来说可谓是福音:

专治SQL语句的冗长和它不擅长的抽象机制 (abstraction mechanisms)。

它就是Logica。

(又有新语言了?“扶我起来,还能学”)

逻辑编程语言解决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 |

+-------+

热议:能否成为主流?

谷歌工程师们鼓励大家积极尝试Logica。

很多人很高兴看到Google推出的这样一门新的逻辑编程语言,但表示被主流采用还有很长的路要走。

正如很多网友都有一些质疑:

有人认为Logica没有真的做到转SQL,只是用了作为虚拟机的解释器动态“翻译”的。

还有人觉得这不是通常意义的逻辑编程,仅仅搞了搞数据库查询。

并且还会带来依赖问题。

但他们都表示可能是对Logica了解得不够深入。

只有一个人的关注点是这个新编程语言的名字和一家公司撞名了

最后,项目已开源,参见链接[2]。有兴趣(有头发的)的朋友可以自己尝试一下!

参考链接:

[1]https://opensource.googleblog.com/2021/04/logica-organizing-your-data-queries.html

[2]https://github.com/EvgSkv/logica

[3]https://news.ycombinator.com/item?id=26805121

[4]https://www.163.com/dy/article/G7GCQN3G0511FQO9.html

— 完 —

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

原标题:《谷歌发布新编程语言,专治SQL各种“不服”》

阅读原文

    本文为澎湃号作者或机构在澎湃新闻上传并发布,仅代表该作者或机构观点,不代表澎湃新闻的观点或立场,澎湃新闻仅提供信息发布平台。申请澎湃号请用电脑访问http://renzheng.thepaper.cn。

    +1
    收藏
    我要举报

            扫码下载澎湃新闻客户端

            沪ICP备14003370号

            沪公网安备31010602000299号

            互联网新闻信息服务许可证:31120170006

            增值电信业务经营许可证:沪B2-2017116

            © 2014-2024 上海东方报业有限公司

            反馈