函数式编程有哪些优点
函数式编程的优点:1、代码简洁,开发快速;2、接近自然语言,易于理解;3、更方便的代码管理;4、易于”并发编程”;5、代码的热升级。其中,代码简洁,开发快速是指函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快。
1、代码简洁,开发快速
函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快。Paul Graham在《黑客与画家》一书中写道:同样功能的程序,极端情况下,Lisp代码的长度可能是C代码的二十分之一。
如果程序员每天所写的代码行数基本相同,这就意味着,”C语言需要一年时间完成开发某个功能,Lisp语言只需要不到三星期。反过来说,如果某个新功能,Lisp语言完成开发需要三个月,C语言需要写五年。”当然,这样的对比故意夸大了差异,但是”在一个高度竞争的市场中,即使开发速度只相差两三倍,也足以使得你永远处在落后的位置。”
2、接近自然语言,易于理解
函数式编程的自由度很高,可以写出很接近自然语言的代码。
3、更方便的代码管理
函数式编程不依赖、也不会改变外界的状态,只要给定输入参数,返回的结果必定相同。因此,每一个函数都可以被看做独立单元,很有利于进行单元测试(unit testing)和除错(debugging),以及模块化组合。
4、易于”并发编程”
函数式编程不需要考虑”死锁”(deadlock),因为它不修改变量,所以根本不存在”锁”线程的问题。不必担心一个线程的数据,被另一个线程修改,所以可以很放心地把工作分摊到多个线程,部署”并发编程”(concurrency)。
5、代码的热升级
函数式编程没有副作用,只要保证接口不变,内部实现是外部无关的。所以,可以在运行状态下直接升级代码,不需要重启,也不需要停机。Erlang语言早就证明了这一点,它是瑞典爱立信公司为了管理电话系统而开发的,电话系统的升级当然是不能停机的。
延伸阅读
函数式编程的特点
- 闭包和高阶函数
- 惰性计算
- 递归
- 函数是”名列前茅等公民”
- 只用”表达式”,不用”语句”
- 没有”副作用”
- 不修改状态
- 引用透明性
- 副作用