简单说,"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。
是一种编程典范,它将计算机运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。
函数编程支持函数作为第一类对象,有时称为闭包或者仿函数(functor)对象。
函数式编程的列子有:
1. LISP
2. Haskell
3. Scheme
4. Erlang
用函数式编程的优点:
1. 代码简洁,开发快速
函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快。
2. 接近自然语言,易于理解
函数式编程的自由度很高,可以写出很接近自然语言的代码。
3. 更方便的代码管理
函数式编程不依赖、也不会改变外界的状态,只要给定输入参数,返回的结果必定相同。
因此,每一个函数都可以被看做独立单元,很有利于进行单元测试(unit testing)和除错(debugging),以及模块化组合。
4. 易于"并发编程"
函数式编程不需要考虑"死锁"(deadlock),因为它不修改变量,所以根本不存在"锁"线程的问题。
不必担心一个线程的数据,被另一个线程修改,所以可以很放心地把工作分摊到多个线程,部署"并发编程"(concurrency)。
5. 代码的热升级
函数式编程没有副作用,只要保证接口不变,内部实现是外部无关的。