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

????????关注后回复 “进群” ,拉你进程序员交流群????????

丰色 发自 凹非寺

量子位 报道 | 公众号 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

-End-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

点击????卡片,关注后回复【面试题】即可获取

在看点这里好文分享给更多人↓↓

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL(Structured Query Language)是用于处理关系型数据库的编程语言。华为在其SQL编程语言规范中,提供了一套指导规则和标准,以确保在编写SQL代码时的一致性和可靠性。 首先,华为的SQL编程语言规范涵盖了SQL语法的用法和限制。这些规范定义了如何编写SQL查询,更和删除语句,包括语句的结构和关键字的使用方式。这有助于开发人员更好地理解SQL语法,减少语法错误和歧义。 其次,规范还提供了对SQL数据类型和表结构的约定。这些约定可以帮助开发人员在设计数据库时选择适当的数据类型,确保数据的完整性和一致性。 此外,该规范还涉及到SQL查询性能的优化技巧。通过遵循规范中的最佳实践,开发人员可以优化查询的执行计划,提高查询速度和性能。规范中还包括了如何创建和使用索引、优化查询语句等内容。 另外,该规范还包括了对SQL代码编写风格的要求。规范中可能包含对代码缩进、命名规范、注释等方面的建议,以确保代码的可读性和可维护性,降低代码的复杂性和错误率。 最后,规范还可能包含对异常处理和安全性的要求。开发人员需要遵循规范中关于处理异常情况和保护数据安全的建议,以保证系统的稳定性和安全性。 综上所述,华为的SQL编程语言规范是一套指导性的标准,帮助开发人员编写合规、高效、可读性强的SQL代码。遵循该规范可以提高开发效率、降低错误发生率,并且促进团队之间的合作和交流。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值