专栏名称: Python之禅
分享Python相关技术干货,偶尔扯扯其它的
目录
相关文章推荐
Python爱好者社区  ·  史上最强!PINN杀疯了 ·  3 天前  
Python爱好者社区  ·  英伟达憾失DeepSeek关键人才?美国放走 ... ·  3 天前  
Python爱好者社区  ·  DeepSeek创始人梁文锋个人履历 ·  5 天前  
Python爱好者社区  ·  1885页的Python完全版电子书 ·  5 天前  
Python爱好者社区  ·  多模态,杀疯了 ·  4 天前  
51好读  ›  专栏  ›  Python之禅

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

Python之禅  · 公众号  · Python  · 2021-05-10 19:35

正文

丰色 发自 凹非寺

量子位 报道 | 公众号 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,只是用了作为虚拟机的解释器动态“翻译”的。

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







请到「今天看啥」查看全文


推荐文章
Python爱好者社区  ·  史上最强!PINN杀疯了
3 天前
Python爱好者社区  ·  DeepSeek创始人梁文锋个人履历
5 天前
Python爱好者社区  ·  1885页的Python完全版电子书
5 天前
Python爱好者社区  ·  多模态,杀疯了
4 天前
腾云  ·  黄斌:界限是磨合出来的
7 年前
日食记  ·  躲远点,我要爆浆了!
7 年前