4

据我所知,声明式编程和命令式编程之间的主要区别在于,在声明式编程中,您宁愿指定问题所在,而在命令式编程中,您确切说明如何解决问题。

但是,我并不完全清楚何时使用一个而不是另一个。想象一下,您被要求解决某个问题,根据哪些属性您决定以声明方式(即使用 prolog)或命令方式(即使用 Java)来解决这个问题?对于什么样的问题,您更愿意使用其中一个而不是另一个?

4

1 回答 1

3

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

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

为了看到一个重要的区别,例如将纯 Prolog 与 Java 进行比较:假设我去掉了 Prolog 程序中的一个规则。我先验地知道 这最多可以使程序具体:以前持有的一些东西现在可能不再持有。

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

因此,命令式程序中的更改可能会产生非常不可预见的影响,并且非常难以推理,因为几乎没有保证和不变量,并且许多事情都隐含在程序的某些全局状态中。这使得命令式编程非常容易出错。

于 2016-01-05T10:36:16.940 回答