Google发布新语言Logica,以解决SQL语言

Google 发布新语言 Logica,一种类似 Datalog 的逻辑编程语言

Google 日前发布 Logica, 一种新颖的 开源 逻辑编程语言,作为 Yedalog 的继承(Yedalog 是早期 Google 开发的一种语言)它是一种类似 Datalog 的逻辑编程语言。

Logica代码可以编译成 SQL,并在 Google BigQuery 上运行(实验性地支持PostgreSQL和SQLite),但它更简洁,并支持SQL所缺乏的简洁和可重用的抽象机制。它支持模块和导入,可以从交互式的 Python 笔记本上使用,它甚至可以让你的查询测试变得自然和简单。

众所周知,SQL 是基于自然语言所开发的,它让无数没有经过正规计算机编程和数学培训的人能够顺利访问数据库,而这同时也是 SQL 无法弥补的缺陷。

而逻辑编程语言通过使用数学命题逻辑的语法、而不是自然英语语言来解决 SQL 的问题。形式逻辑的语言是数学家专门为了使复杂语句的表达更容易而设计的,比自然语言更适合这个目的。Logica 进一步扩展了经典 Logic编程语法,最主要的是用聚合,因此而得名,它代表着 Logica = Logic + aggregation,即逻辑+聚合。

此外,Google 官方在公告文章中表示:

好的编程是关于创建小的、可理解的、可重用的逻辑片断,这些逻辑片断可以被测试、给定名称,并组织成包,以后可以用来构造更有用的逻辑片断。SQL抵制这种工作流。尽管你可以将某些重复的计算封装到视图和函数中,但这些语法和支持在不同的实现中会有所不同,包和导入的概念通常是不存在的,而且更高层次的构造(例如将一个函数传递给一个函数)是不可能的。

这种对将逻辑分解成小块的内在阻力,导致了人为的、冗长的查询、复制粘贴的代码块,以及最终不可维护的、非结构化的(注意是讽刺)SQL代码库。更糟糕的是,SQL代码很少被测试,因为 "测试SQL查询"。

"对大多数工程师来说,充其量只是听起来相当深奥。正因为如此,人们开发了许多替代查询语言在这些语言中,基于逻辑编程的系统也许最接近解决SQL的局限性。

image.png

开发者尝鲜