据我所知,声明式编程和命令式编程之间的主要区别在于,在声明式编程中,您宁愿指定问题所在,而在命令式编程中,您确切说明如何解决问题。
但是,我并不完全清楚何时使用一个而不是另一个。想象一下,您被要求解决某个问题,根据哪些属性您决定以声明方式(即使用 prolog)或命令方式(即使用 Java)来解决这个问题?对于什么样的问题,您更愿意使用其中一个而不是另一个?
据我所知,声明式编程和命令式编程之间的主要区别在于,在声明式编程中,您宁愿指定问题所在,而在命令式编程中,您确切说明如何解决问题。
但是,我并不完全清楚何时使用一个而不是另一个。想象一下,您被要求解决某个问题,根据哪些属性您决定以声明方式(即使用 prolog)或命令方式(即使用 Java)来解决这个问题?对于什么样的问题,您更愿意使用其中一个而不是另一个?
命令式编程更接近实际机器的执行情况。这是一种非常低级的编程形式,您的应用程序越复杂,您就越难以掌握如此低级的所有细节。从好的方面来说,靠近机器,如果你擅长的话,你可以编写相当高性能的代码。
声明式编程更加抽象和高级:使用相对较少的代码,您可以以一种更容易被视为正确的方式表达相当复杂的关系。
为了看到一个重要的区别,例如将纯 Prolog 与 Java 进行比较:假设我去掉了 Prolog 程序中的一个规则。我先验地知道 这最多可以使程序更具体:以前持有的一些东西现在可能不再持有。
另一方面,假设我删除了 Java 程序中的一个语句:关于一般的效果没什么可说的。该程序甚至可能不再编译。
因此,命令式程序中的更改可能会产生非常不可预见的影响,并且非常难以推理,因为几乎没有保证和不变量,并且许多事情都隐含在程序的某些全局状态中。这使得命令式编程非常容易出错。