丰色 发自 凹非寺
量子位 报道 | 公众号 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 的质数的具体示例:

运行结果:

热议:能否成为主流?

谷歌工程师们鼓励大家积极尝试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各种“不服”相关推荐

  1. 谷歌发布新的 Node.js Web 渲染界面 Carlo

    谷歌发布Carlo的早期版本,这是谷歌实验室用来创建Node.js应用的实验性项目.Carlo使用Puppeteer实现Node.js应用和Chrome Web浏览器之间的通信. \n 在使用Web技 ...

  2. 微信出了一个新功能专治「借钱不还」

    loonggg 读完需要 3 分钟 速读仅需 1 分钟 大家好,我是校长. 昨天微信电子签小程序上线了「小借条」功能,主要功能就是让借钱这件事变得「好借好还,再借不难」. 01 小借条 微信电子签小程 ...

  3. 打开 谷歌浏览器exe_专治各种网银不服:两步开启微软Edge浏览器IE兼容模式

    此前微软已经预告过Microsoft Edge将支持IE模式,即可以在该浏览器下使用IE模式加载某些特定的需要的网站. 不过在后续更新中微软又突然改口不再面向普通用户提供此功能,而企业级用户若要使用还 ...

  4. 90 后程序员开发“AI 吵架神器”,专治女朋友各种不服!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 致女友:今天,我们程序员就来跟你好好讲讲道理. 自电脑问世以来,就有人致力于让电脑理解人们的 ...

  5. 虚拟机命令里面的光标不动了怎么办_专治VMware各种不服之虚拟机开机黑屏、蓝屏...

    请切记,淡定分析,淡定解决 ------一个砸过电脑且卑微的过来人 一.虚拟机开机出现黑屏(win10) 管理员身份打开cmd(命令提示符) 依次执行如下5个命令: netsh 然后关机重启就行,不用 ...

  6. 腾讯 QQ 产品已经实现全量上云;中科院计算所发明新编程语言“木兰”;Electron 7.1.9 发布 | 极客头条...

    整理 | 屠敏 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...

  7. 腾讯 QQ 产品已经实现全量上云;中科院计算所发明新编程语言“木兰”;Electron 7.1.9 发布 | 极客头条

    一分钟速览新闻点! 贵州今年建成华为数据中心.iCloud 数据中心等项目 美团打车:"出租车感谢费"模块已下线,将进一步评估方案 腾讯 QQ 产品已经实现全量上云 华为面向全球发 ...

  8. 谷歌云mysql_面向开发者 谷歌云发布新数据库工具

    原标题:面向开发者,谷歌云发布新数据库工具 2月1日消息,据外媒报道,谷歌于今日发布了两种新工具,一种是名为Cloud SQL Insights的云服务,另一种是开源软件库. 对此,谷歌云称,开发人员 ...

  9. 《预训练周刊》第27期:谷歌发布最新看图说话模型、GitHub:平台上30%的新代码受益于AI助手Copilot...

    No.27 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 本期周刊,我们选择了9篇预训练相关的论文,涉及少样本理解.图像检测.决策图.大模型微调.对话微调.分子建模.蛋白质结构预测 ...

最新文章

  1. 图片验证码把我逼成了人工智障
  2. 最短路模板 - Floyd / Dijkstra
  3. 一些技术社区关于博客内图片 markdown 源代码的字数统计
  4. 在VS中进行对项目进行编译出现不能编译的问题
  5. 操作系统--进程状态切换以及cpu调度(转)
  6. java 设置系统参数_Java设置系统参数和运行参数
  7. Java prepare
  8. php 重定义数组k,PHP基础篇之数组
  9. 〖3D激光点云〗深度学习点云知识!
  10. java game nokia 5233 model,诺基亚S60/^3完美运行GBA游戏教程 重回孩提时代
  11. 省级c语言笔试题,C语言笔试题库.doc
  12. 前端页面点击姓名查看详情
  13. 二.LVGL学习——(lv_obj基础对象)
  14. linux vi指令选则从某行到某行注释,详解linux vi命令用法
  15. solr版本的选择,4.X如何选择?
  16. Win7秘籍 如何用压缩卷调整不合理分区
  17. 耳机是如何是发出声音的?
  18. 地域和地方的区别_经济区域和区域经济的区别和联系是什么
  19. lwip组播实现和原理-STM32F407
  20. 新建HttpServletRequest对象

热门文章

  1. 在Python源中使用UTF-8编码[重复]
  2. 如何在Docker容器中挂载主机目录
  3. 从命令行列出所有环境变量?
  4. 你什么时候使用git rebase而不是git merge?
  5. 为什么是string.join(list)而不是list.join(string)?
  6. 科创板7天受理28家公司,但后者“含金量”备受质疑
  7. MySQL的JOIN(一):用法
  8. GOF对Builder模式的定义(转载)
  9. Where we can find sharepoint user list
  10. 使用python库matplotlib绘制不同的图表