函数式编程

FP(function programming)就是函数式编程的英文缩写,那么究竟什么是函数式编程呢?

编程范式

首先,我们应该了解一些编程范式的概念。

函数式编程是一种编程范式, 我们常见的编程方式有命令式编程函数式编程、逻辑式编程, 常见的面向对象的编程也是命令式编程。  

  

函数式编程和命令式编程的最大区别

函数式编程与命令式编程最大的不同就在于: 函数式编程关心的是数据的映射,命令式编程关心的是解决问题的步骤。 

函数是什么:

这里的函数就是数学上【函数】的概念 --- 即一个输入对应着确定的输出(映射)。 这也就是为什么函数式编程叫做【函数】式编程了。 这也是函数式编程的本质, 比如sqrt(x)函数计算x的平方根,只要x不变,俺么无论什么时候调用,调用几次,值都是不变的。 

函数式编程的好处?

代码简洁:

  函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度比较快。

接近自然语言,易于理解:

  函数式编程的*度很高,可以写出很接近自然语言的代码。 

  如表达式  (1 + 2)*3 - 4 ,如果我们议程一般的命令式编程方法,如下:

  var a = 1 + 2;
  var b = a * 3;
  var c = b - 4;

  

  而如果我们把它写成下面这样的函数式编程,如下:

var result = subtract(multiply(add(1,2), 3), 4);

  

  可以看到函数式编程,更容易理解,看上去更加简洁。对他进行变形,不难得到另一个写法:

add(1,2).multiply(3).subtract(4)

  

更方便的代码管理

  函数式编程不依赖、也不会改变外界的状态,只要给定了输入参数,返回的结果就必定相同。 因此,每个函数都可以被看做独立单元,这 有利于单元测试和出错以及模块化组合。

代码的热升级

  函数式编程没有副作用,只要接口不变,内部实现和外部无关,所以,可以在运行状态下直接升级代码,不需要重启,也不需要停机。

参考:http://www.ruanyifeng.com/blog/2012/04/functional_programming.html