何时使用声明式编程而不是命令式编程

时间:2016-01-05 08:28:47

标签: prolog declarative paradigms imperative

据我所知,声明式编程和命令式编程之间的主要区别在于,在声明式编程中,您更愿意指出问题所在,而在命令式编程中,您可以准确地说明如何解决问题。

然而,对于我来说,何时使用一个而不是另一个并不完全清楚。想象一下,你被强制解决某个问题,根据你决定以声明方式(即使用prolog)或命令性(即使用Java)来解决这个问题?对于哪种问题,您更喜欢使用哪一种?

1 个答案:

答案 0 :(得分:3)

命令式编程更接近实际机器的性能。这是一种非常低级的编程形式,应用程序越复杂,您就越难以掌握如此低级别的所有细节。从好的方面来说,靠近机器,如果你擅长的话,你可以编写性能相当的代码。

声明性编程更抽象,更高层次:使用相对较少的代码,您可以以更容易被视为正确的方式表达相当复杂的关系。

要看到一个重要的区别,比较一下纯Prolog与Java:假设我带走了Prolog程序中的一个规则。我知道 先验这可以使程序最多 更具体:以前可能存在的一些事情现在可能不再持有。

另一方面,假设我在Java程序中删除了一个语句:对于一般的效果,没有什么可说的。该程序甚至可能不再编译。

因此,命令式程序的变化可能会产生非常不可预见的影响,并且极难推理,因为很少有保证和不变量,并且在程序的某些全局状态中隐含了很多东西。这使命令式编程非常容易出错。