什么是函数式编程?
函数式编程(英语:functional programming)或称函数程序设计、泛函编程,是一种编程范式,它将计算机运算视为函数运算,并且避免使用程序状态以及易变对象。其中,λ演算(lambda calculus)为该语言最重要的基础。而且,λ演算的函数可以接受函数当作输入(引数)和输出(传出值)。
比起指令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程。(维基百科)
函数式编程又分为纯函数式编程和非纯函数式编程,纯函数式编程又分 强静态类型和弱类型;非纯函数式编程又分为强静态类型和强动态类型
函数式编程优点:
开网上资料说函数式编程没有编程的问题,是多线程安全的。
(知乎)
由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好处主要是不可变性带来的。没有可变的状态,函数就是引用透明(Referential transparency)的和没有副作用(No Side Effect)。
一个好处是,函数即不依赖外部的状态也不修改外部的状态,函数调用的结果不依赖调用的时间和位置,这样写的代码容易进行推理,不容易出错。这使得单元测试和调试都更容易。
不变性带来的另一个好处是:由于(多个线程之间)不共享状态,不会造成资源争用(Race condition),也就不需要用锁来保护可变状态,也就不会出现死锁,这样可以更好地并发起来,尤其是在对称多处理器(SMP)架构下能够更好地利用多个处理器(核)提供的并行处理能力。
作者:Accelerator
链接:https://www.zhihu.com/question/30190384/answer/142902047
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
函数式编程又开始流行:
我想正是因为现在云计算,高并发访问越来越多,多核处理器快速发展,而函数式编程没有并发编程的问提,而且多线程安全,所以他开始流行了。
另参考知乎
不对的地方希望大佬指正。