逻辑编程语言处理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 | (编辑:宣城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! | 

