1.为什么使用函数式编程?
(1)代码简洁,开发迅速。可以大量的复用写好的函数,减少许多重复性的工作,加速了开发周期。
(2)便于理解。函数式编程书写的代码更接近于自然语言,大家都能够比较轻易的理解写的内容,而且不太需要深入探究内部原理。
(3)便于管理。函数式编程不依赖、也不会改变外界的状态,只要给定输入参数,返回的结果必定相同。因此,每一个函数都可以被看做独立单元,有利于单元测试、debug等。组合起来也极其简单。
(4)易于并发编程。函数式编程不需要考虑"死锁"(deadlock),因为它不修改变量,所以根本不存在"锁"线程的问题。不必担心一个线程的数据,被另一个线程修改,所以可以很放心地把工作分摊到多个线程,部署"并发编程"(concurrency)。
(5)热开发。函数式编程没有副作用,只要保证接口不变,内部实现是外部无关的。所以,可以在运行状态下直接升级代码,不需要重启,也不需要停机。
2.什么是函数式编程
函数式编程是对运算过程的抽象,用来描述数据(函数)之间的映射。
OO更多的是面向作用域,而函数式编程更多的是面向功能。函数式编程有一个巨大的优势,就是作用域链,也就是说函数可以访问的变量范围要远远大于OO,灵活性就成几何级数上升。换句话也可以说OO的约束性更强。