本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。长期以来,世界一直在遭受SQL的折磨。就是一条查询语句,动辄几百行……不过,谷歌推出的这种新的逻辑编程语言,却是“SQL党”的福音:它可以处理SQL语句的冗长,它的抽象机制不擅长。).这是逻辑。(又一门新语言?“扶我起来,我还能学”)逻辑编程语言解决了SQL的局限Google为什么要推出这样一门新的编程语言?有句话叫“数据是新世纪的石油”。SQL作为一种数据处理的通用语言,由于其基于自然语言的设计,通俗易懂,易于上手,已经流行了很多年。然而,它并不完美:没有将逻辑分成小块的设计,没有“模块”和“导入”SQL的概念没有高级构造(例如在函数之间传递),这导致非常有限支持SQL中的抽象,更不用说维护数百行语句了。对此有好的解决方案吗?市面上已经开发了很多数据库查询语言和相应的库供大家选择。其中,逻辑编程语言最能解决SQL的局限性。逻辑编程语言LogicaLogica就是这样一种逻辑编程语言。什么是逻辑编程?逻辑编程是一种编程范式。它设定了解决问题的答案必须符合的规则,而不是设定解决问题的步骤。过程是事实+规则=结果。Logica进一步扩展了经典的逻辑编程语法,最引人注目的是聚合,这就是名称的来源:Logic+Aggregation。Logica继承自Yedalog(谷歌早期开发的语言),是一种类数据日志的逻辑编程语言。Logica代码编译为SQL并在GoogleBigQuery上运行(还支持PostgreSQL和SQLite):支持SQL所缺乏的简洁和可重用的抽象支持模块和导入甚至使测试查询变得轻而易举!好用与否,用过就知道了。下面是查找小于30的素数的具体示例:#Definenaturalnumbersfrom1to29.N(x):-xinRange(30);#Defineprimes.Prime(prime:x):-N(x),x>1,~(N(y),y>1,y!=x,Mod(x,y)==0);运行结果:$logicaprimes.lrunPrime+--------+|prime|+------+|2||3||5||7||11||13||17||19||23||29|+-------+热议:能否成为主流?Google工程师鼓励大家积极尝试Logica。许多人很高兴看到谷歌推出这样一种新的逻辑编程语言,但表示距离主流采用还有很长的路要走。正如很多网友的一些疑惑:有人认为Logica并没有真正转换成SQL,只是作为一个虚拟机解释器来动态“翻译”而已。有人认为这不是通常意义上的逻辑编程,只是做数据库查询。而且还会带来依赖问题。但是他们都表示可能对Logica的理解还不够深入。只有一个人担心的是,这种新的编程语言的名称与图片中的一家公司发生了冲突最后,该项目已经开源,请参见链接[2]。有兴趣(带毛)的朋友可以自己尝试一下!
