加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

逻辑编程语言处理SQL的局限性

发布时间:2021-05-28 23:36:57 所属栏目:编程 来源:互联网
导读:谷歌为什么要推出这样一门新的编程说话? 有道是,数据是新世纪的石油。 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 | 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读