知行编程网知行编程网  2022-07-04 09:00 知行编程网 隐藏边栏 |   抢沙发  3 
文章评分 0 次,平均分 0.0

丰色 发自 凹非寺
量子位 报道 | QbitAI

大家好,我是菜鸟哥。

天下苦SQL久矣。

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

谷歌发布新编程语言,专治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 的质数的具体示例:

<p><span style="color: rgb(153, 153, 136);font-style: italic;line-height: 26px;"># Define natural numbers from 1 to 29.</span><br  />N(x) :- x <span style="font-weight: bold;line-height: 26px;">in</span> Range(30);<br  /><span style="color: rgb(153, 153, 136);font-style: italic;line-height: 26px;"># Define primes.</span><br  />Prime(prime: x) :-<br  />  N(x),<br  />  x > 1,<br  />  ~(<br  />    N(y),<br  />    y > 1,<br  />    y != x,<br  />    Mod(x, y) == 0<br  />  );<br  /></p>
运行结果:
<section>$ logica primes.l run Prime<br  />+-------+<br  />| prime |<br  />+-------+<br  />|     2 |<br  />|     3 |<br  />|     5 |<br  />|     7 |<br  />|    11 |<br  />|    13 |<br  />|    17 |<br  />|    19 |<br  />|    23 |<br  />|    29 |<br  />+-------+</section>

热议:能否成为主流?

谷歌工程师们鼓励大家积极尝试Logica。
很多人很高兴看到Google推出的这样一门新的逻辑编程语言,但表示被主流采用还有很长的路要走。
谷歌发布新编程语言,专治SQL各种“不服”
正如很多网友都有一些质疑:
有人认为Logica没有真的做到转SQL,只是用了作为虚拟机的解释器动态“翻译”的。
谷歌发布新编程语言,专治SQL各种“不服”
还有人觉得这不是通常意义的逻辑编程,仅仅搞了搞数据库查询。
谷歌发布新编程语言,专治SQL各种“不服”
并且还会带来依赖问题。
但他们都表示可能是对Logica了解得不够深入。
谷歌发布新编程语言,专治SQL各种“不服”
谷歌发布新编程语言,专治SQL各种“不服”
只有一个人的关注点是这个新编程语言的名字和一家公司撞名了谷歌发布新编程语言,专治SQL各种“不服”
谷歌发布新编程语言,专治SQL各种“不服”
最后,项目已开源,参见链接[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


<section><section style="margin-right: 8px;margin-left: 8px;letter-spacing: 0.544px;white-space: normal;font-family: -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;text-align: center;color: rgb(89, 89, 89);orphans: 4;widows: 1;word-spacing: 2px;caret-color: rgb(255, 0, 0);line-height: 1.75em;"><span style="font-size: 15px;"></span></section><section><br  /></section><p style="max-width: 100%;min-height: 1em;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "PingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 16px;font-weight: 700;text-align: left;white-space: pre-wrap;widows: 1;caret-color: rgb(255, 0, 0);background-color: rgb(255, 255, 255);letter-spacing: 0.544px;word-spacing: 1.6px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;color: rgb(190, 26, 29);box-sizing: border-box !important;overflow-wrap: break-word !important;">近期热门文章</span></p><p style="max-width: 100%;min-height: 1em;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "PingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 16px;font-weight: 700;text-align: left;white-space: pre-wrap;widows: 1;caret-color: rgb(255, 0, 0);background-color: rgb(255, 255, 255);letter-spacing: 0.544px;word-spacing: 1.6px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"  /></p><ul class="list-paddingleft-2" style="max-width: 100%;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "PingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 16px;font-weight: 700;text-align: left;white-space: pre-wrap;widows: 1;caret-color: rgb(255, 0, 0);background-color: rgb(255, 255, 255);letter-spacing: 0.544px;word-spacing: 1.6px;overflow-wrap: break-word !important;"><li style="max-width: 100%;color: rgb(25, 67, 156);box-sizing: border-box !important;overflow-wrap: break-word !important;"><p style="max-width: 100%;min-height: 1em;line-height: 2em;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">30 行代码实现蚂蚁森林自动收能量(附送源码)</span></p></li><li style="max-width: 100%;color: rgb(25, 67, 156);box-sizing: border-box !important;overflow-wrap: break-word !important;"><p style="max-width: 100%;min-height: 1em;line-height: 2em;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">Linux 最常用命令:简单易学,但能解决 95% 以上的问题<br style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"  /></span></p></li><li style="max-width: 100%;color: rgb(25, 67, 156);box-sizing: border-box !important;overflow-wrap: break-word !important;"><p style="max-width: 100%;min-height: 1em;line-height: 2em;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">2021了,最流行的密码依旧是123456</span><br style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"  /></p></li><li style="max-width: 100%;color: rgb(25, 67, 156);box-sizing: border-box !important;overflow-wrap: break-word !important;"><p style="max-width: 100%;min-height: 1em;line-height: 2em;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">真香!用VS Code直接浏览GitHub代码 !</span><br style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"  /></p></li><li style="max-width: 100%;color: rgb(25, 67, 156);box-sizing: border-box !important;overflow-wrap: break-word !important;"><p style="max-width: 100%;min-height: 1em;line-height: 2em;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">从万众期待到口碑扑街!唐探3令人失望,用Python来分析一下大家的评论</span></p></li><li style="max-width: 100%;color: rgb(25, 67, 156);box-sizing: border-box !important;overflow-wrap: break-word !important;"><p style="max-width: 100%;min-height: 1em;line-height: 2em;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">用Python分析了某大学2000千条表白墙,甜到发腻,原来脱单的秘密是……</span></p></li><li style="max-width: 100%;color: rgb(25, 67, 156);box-sizing: border-box !important;overflow-wrap: break-word !important;"><p style="max-width: 100%;min-height: 1em;line-height: 2em;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">值得收藏!20个Python奇技淫巧,让你受益匪浅!</span></p></li><li style="max-width: 100%;color: rgb(25, 67, 156);box-sizing: border-box !important;overflow-wrap: break-word !important;"><p style="max-width: 100%;min-height: 1em;line-height: 2em;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">这款IDEA插件刷爆了朋友圈,网友:这用起来有点酸爽~</span></p></li><li style="max-width: 100%;color: rgb(25, 67, 156);box-sizing: border-box !important;overflow-wrap: break-word !important;"><p style="max-width: 100%;min-height: 1em;line-height: 2em;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;font-size: 15px;text-decoration: underline;box-sizing: border-box !important;overflow-wrap: break-word !important;">央视最美记者王冰冰火爆B站,单个视频1800万播放,都说了啥?</span></p></li></ul></section>

本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享