知优码

您现在的位置是:首页 > Java语言 > Java进阶

Java进阶

新编程语言Logica代替sql

2021-05-02Java进阶
新编程语言Logica代替sql

一、 Logica简介

谷歌新推出的这个逻辑编程语言,对于“SQL”来说可谓是福音,专治SQL语句的冗长和它不擅长的抽象机制 (abstraction mechanisms)。

二、详解

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
  );