函数式编程、声明式编程和命令式编程是什么意思?


当前回答

命令式编程是指任何一种编程风格,其中你的程序是由描述计算机执行的操作如何发生的指令构成的。

声明式编程是指任何一种编程风格,其中你的程序是对问题或解决方案的描述,但没有显式地说明如何完成工作。

函数式编程是通过计算函数和函数的函数来编程。函数式编程(严格定义)是指通过定义无副作用的数学函数来编程,因此它是一种声明式编程,但它不是唯一的声明式编程。

逻辑编程(例如在Prolog中)是另一种形式的声明式编程。它包括通过决定一个逻辑语句是否为真(或是否可以满足它)来计算。程序通常是一系列事实和规则——即描述,而不是一系列指令。

术语重写(例如CASL)是声明式编程的另一种形式。它涉及代数项的符号变换。它完全不同于逻辑编程和函数式编程。

其他回答

命令式编程:告诉“机器”如何做某事,结果你想发生的事情就会发生。

声明式编程:告诉“机器”你想要发生什么,然后让计算机想出如何去做。

命令式的例子

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);
}

注:区别不在于简洁、复杂或抽象。如前所述,区别在于如何做和做什么。

简而言之:

命令式语言指定了计算机按顺序执行的一系列指令(做这个,然后做那个)。

声明性语言声明了一组规则,说明哪些输入应该产生哪些输出(例如:如果你有A,那么结果就是B).引擎会将这些规则应用于输入,并给出输出。

函数式语言声明了一组数学/逻辑函数,这些函数定义了如何将输入转换为输出。如。F (y) = y * y.它是一种声明性语言。

简而言之,一种编程风格越是强调“做什么”(What (to do))而忽略了“如何做”(How (to do))的细节,这种风格就越被认为是声明性的。而imperative则相反。函数式编程与声明式风格相关联。

命令式——表达式描述要执行的动作序列(关联的)

声明性——表达式是对程序行为做出贡献的声明(关联、交换、幂等、单调)

函数式表达式的值仅为效果;语义支持等式推理

命令式编程是指任何一种编程风格,其中你的程序是由描述计算机执行的操作如何发生的指令构成的。

声明式编程是指任何一种编程风格,其中你的程序是对问题或解决方案的描述,但没有显式地说明如何完成工作。

函数式编程是通过计算函数和函数的函数来编程。函数式编程(严格定义)是指通过定义无副作用的数学函数来编程,因此它是一种声明式编程,但它不是唯一的声明式编程。

逻辑编程(例如在Prolog中)是另一种形式的声明式编程。它包括通过决定一个逻辑语句是否为真(或是否可以满足它)来计算。程序通常是一系列事实和规则——即描述,而不是一系列指令。

术语重写(例如CASL)是声明式编程的另一种形式。它涉及代数项的符号变换。它完全不同于逻辑编程和函数式编程。