关键区别–函数式编程与命令式编程
函数式程序设计与命令式程序设计的关键区别在于,函数式程序设计将计算看作数学函数,避免了状态和数据的变化,而命令式程序设计使用改变程序状态的语句。
编程范例提供了一种构建计算机程序的结构和元素的风格。编程范例有助于根据编程语言的特征对其进行分类。编程语言可能会影响更多的范例。在面向对象的范例中,程序是用对象构造的,而对象是用方法传递消息的。逻辑程序设计只能用数理逻辑来表示计算。另外两种编程范式是函数式编程和命令式编程。函数式编程允许将计算表示为数学函数的求值。命令式编程提供显式更改内存状态的语句。本文讨论函数式编程与命令式编程的区别。
目录
1. 概述和主要区别
2. 什么是函数式编程
3. 什么是命令式编程
4. 函数式编程与命令式编程的相似性
5. 并排比较-函数式编程与表格形式的命令式编程
6.摘要
什么是函数式程序设计(functional programming)?
函数式程序设计是以数学为基础的。函数式编程背后的关键原则是,所有的计算都被看作是独立数学函数的组合。数学函数将输入映射到输出。假设有一个函数叫做f(x)=x*x,x值1映射到输出1。x值2映射到输出4。x值3映射到输出9,依此类推。
在函数式编程中,要考虑模式。函数式编程语言Haskell使用下面的方法来求数的总和。
sum函数有整数值,结果也是整数。它可以写成sum:[int]->int。可以按照以下模式进行求和。
sum[n]=n,一个数的和就是这个数本身。
如果有一个数字列表,可以写如下。n代表第一个数字,ns代表其他数字
和(n,ns)=n+和ns。
上面的模式可以用来求3,4,5三个数的和。
3+总和[4,5]
3+(4+和[5])
3+4+5=12
如果一个函数或一个表达式修改了它的作用域之外的某个状态,或者除了返回值外,它还与调用函数发生了可观察的交互作用,则称它具有副作用。函数式编程将这种副作用最小化。状态变化不依赖于函数输入。它在理解程序行为时很有用。函数式编程的一个缺点是,与命令式编程相比,学习函数式编程更困难。
什么是命令式程序设计(imperative programming)?
命令式编程是一种编程范式,它使用改变程序状态的语句。它的重点是描述程序如何运行。Java、C和C等编程语言是命令式编程语言。它提供了一个循序渐进的步骤。命令式编程语言包含if、else、while、for循环、类、对象和函数等结构。
十个数字的总和可以在Java中找到,如下所示。在每次迭代中,i值被添加到sum并分配给sum变量。在每次迭代中,求和值将继续加到先前计算的总和上。
整数和=0;
对于(int i=0;i<=10;i++){
sum=总和+i;
}
命令式编程易于学习、理解和调试。由于使用状态变量,很容易找到程序状态。它的一些缺点是它会使代码变得冗长,同时也会使可伸缩性最小化。
什么是函数式程序设计与命令式程序设计的相似性(the similarity between functional programming and imperative programming)?
- 函数式编程和命令式编程都是编程范例。
函数式程序设计(functional programming)和命令式程序设计(imperative programming)的区别
命令式编程与函数式编程 | |
函数式程序设计是一种将计算视为对数学函数的求值,避免改变状态和可变数据的编程范式。 | 命令式编程是一种编程范式,它使用语句来改变程序的状态。 |
结构 | |
函数式编程包含函数调用和高阶函数。 | 命令式编程包含if、else、while、for循环、函数、类和对象。 |
程序设计语言 | |
Scala、Haskell和Lisp是函数式编程语言。 | C、C++、java是必不可少的编程语言。 |
专注 | |
函数式编程关注最终结果。 | 命令式编程侧重于描述程序如何运行。 |
简单 | |
函数式编程很难。 | 命令式编程更容易。 |
总结 - 函数式程序设计(functional programming) vs. 命令式程序设计(imperative programming)
编程范例提供了一种构建计算机程序的结构和元素的风格。函数式编程和命令式编程就是其中的两种。函数式程序设计与命令式程序设计的区别在于,函数式程序设计将计算看作数学函数,避免改变状态和可变数据,而命令式编程使用改变程序状态的语句。
引用
1.“命令式编程”,维基百科,维基媒体基金会,2018年3月28日。此处提供2.“函数式编程”,维基百科,维基媒体基金会,2018年3月28日。此处提供3.Computerphile。YouTube,YouTube,2013年8月30日。点击此处
2.“函数式编程”,维基百科,维基媒体基金会,2018年3月28日
3.计算机爱好者。YouTube,YouTube,2013年8月30日