函数式编程、声明式编程和命令式编程是什么意思?
当前回答
命令式编程:告诉“机器”如何做某事,结果你想发生的事情就会发生。
声明式编程:告诉“机器”你想要发生什么,然后让计算机想出如何去做。
命令式的例子
function makeWidget(options) {
const element = document.createElement('div');
element.style.backgroundColor = options.bgColor;
element.style.width = options.width;
element.style.height = options.height;
element.textContent = options.txt;
return element;
}
声明性的例子
function makeWidget(type, txt) {
return new Element(type, txt);
}
注:区别不在于简洁、复杂或抽象。如前所述,区别在于如何做和做什么。
其他回答
我认为你的分类是不正确的。有两种相反的类型,命令式和声明式。函数式只是声明式的一个子类型。顺便说一句,维基百科也说了同样的事实。
当务之急:如何实现我们的目标
Take the next customer from a list.
If the customer lives in Spain, show their details.
If there are more customers in the list, go to the beginning
声明性:我们想要达到的目标
Show customer details of every customer living in Spain
简而言之:
命令式语言指定了计算机按顺序执行的一系列指令(做这个,然后做那个)。
声明性语言声明了一组规则,说明哪些输入应该产生哪些输出(例如:如果你有A,那么结果就是B).引擎会将这些规则应用于输入,并给出输出。
函数式语言声明了一组数学/逻辑函数,这些函数定义了如何将输入转换为输出。如。F (y) = y * y.它是一种声明性语言。
简而言之,一种编程风格越是强调“做什么”(What (to do))而忽略了“如何做”(How (to do))的细节,这种风格就越被认为是声明性的。而imperative则相反。函数式编程与声明式风格相关联。
这里有一些关于所提到的“类型”的好答案。
我还提供了一些额外的、更“奇特”的概念,通常与函数式编程人群有关:
领域特定语言或DSL编程:创建一种新的语言来处理手头的问题。 元编程:当你的程序编写其他程序时。 进化编程:你构建一个系统,它可以不断地自我改进,或者不断地生成更好的子程序。