Functional programming Prolog vs Erlang(和其他函数式语言)

Functional programming Prolog vs Erlang(和其他函数式语言),functional-programming,prolog,erlang,Functional Programming,Prolog,Erlang,Prolog有什么问题 Prolog非常擅长列表和模式匹配,并提供回溯作为奖励。然而几十年来,它仍然是一种不同的语言,而函数式语言却在蓬勃发展 以Erlang为例。它的语法借用了Prolog,它最初是用Prolog实现的,这非常有趣。也就是说,从Erlang人的角度来看,Prolog有一些根本性的问题,或者他们已经根据自己的需要调整了Prolog。在我看来,Prolog现在开始变得有趣起来,而这个问题上的陪审团仍然悬而未决 是的,Prolog比Erlang有更长的传统。从实现的角度来看,它也是一

Prolog有什么问题

Prolog非常擅长列表和模式匹配,并提供回溯作为奖励。然而几十年来,它仍然是一种不同的语言,而函数式语言却在蓬勃发展


以Erlang为例。它的语法借用了Prolog,它最初是用Prolog实现的,这非常有趣。也就是说,从Erlang人的角度来看,Prolog有一些根本性的问题,或者他们已经根据自己的需要调整了Prolog。

在我看来,Prolog现在开始变得有趣起来,而这个问题上的陪审团仍然悬而未决

是的,Prolog比Erlang有更长的传统。从实现的角度来看,它也是一种更加复杂的语言!教学难度也大得多,例如,对于所有其他语言的初学者来说,已经无法解决的任务,传统上会作为序言初学者的前几个示例,这一事实加剧了教学难度

获取回溯、垃圾收集、别名、属性化变量、约束、异常处理以及Prolog为您提供的许多其他正确和高效的功能,同时尊重它们之间通常非常微妙的相互依赖关系,这是不可理解的,不可能在短短几十年内完成,即使一些最有才华和教育程度最高的程序员也会参与进来。当前可用的许多Prolog系统现在刚刚达到可以在生产环境中认真使用它们的程度

相对来说,使简化版的Prolog高效且正确是比较容易的。对真正的东西来说没那么多

作为比较,请认真考虑一下任何一个计划,看看它的实施需要多长时间。大多数有趣的程序在最初发布几十年后仍在认真开发中。Prolog也是如此,一个成熟的Prolog系统肯定比许多其他语言实现提供了更多的功能

我们想要的是真实的东西!所以,是的,Prolog有一些问题:很难正确实现。但是,由于上面提到的众多功能,Prolog还有很多非常正确的地方:一旦完全实现,Prolog将是一个非常出色的、无与伦比的开发环境,适用于各种任务,从定理证明到web托管、解决组合优化问题,测试用例生成和许多其他正在出现的应用程序

例如,Erlang风格的过程现在正在为Prolog开发。例如,见Torbjörn Lager's

为什么这只是现在(即过去两年左右)才在Prolog中可用?很简单:许多Prolog系统(在这种情况下:SWI Prolog)直到最近才运行到24X7 Web服务器上。 为什么会这样?同样,由于Prolog的许多高级特性之间微妙的相互依赖性,很难为Prolog做到这一点。慢慢地,我们终于到了那里


胜利的开场白

一种语言必须能够比其他语言更好地对现实问题进行排序,才能成为主流。说到Erlang,如果没有它的软实时编程能力和能够处理数百万并发任务的抢占式多任务处理能力,它只不过是另一种函数式语言。这加上它在虚拟机中运行的能力,构成了一个真正强大的组合。从这个意义上说,这些添加使得Erlang独一无二。事实上,它是业界唯一广泛使用的编程语言

看看有多少种不同的C/C++方言被创造出来,C/C++仍然是主流。这些新的方言根本没有给已经存在的方言带来任何优势(或者说不够大)


我相信Prolog有自己的定位,但它没有提供太多关于其他语言能够提供什么的信息,这也表明了一些值得思考的原因。

这看起来像是对另一个问题的回答。FWIW刚刚与Torbjorn交换了电子邮件,他说进程已经死了。但是pengines肯定不是我认为你是对的,因为(开放的)系统现在正处于一个成熟的阶段,这使得它们对实际工作很有兴趣。我认为花费这么长时间的主要原因不是因为太难,而是因为开发资源分散在太多的实现上。现在,我们有很多好的实现。尽管如此,每种方法都有非常不同的侧重点。理想情况下,我们应该坐在一起组装一个新系统,该系统将YAP的速度与XSB的列表、ECLiPSe的约束以及SWI-Prolog的环境和接口结合在一起。一致性将有所帮助,有没有比这更大的系统运行Erlang?