区别于面向过程和面向对象的另一种编程思想。
简单说,“函数式编程"是一种"编程范式”(programming paradigm),也就是如何编写程序的方法论。它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。
六大特征
1)函数是"“第一等公民”"。指的是函数与其他数据类型一样,处于平等地位,可以赋值给其他变量,也可以作为参数,传入另一个函数,或者作为别的函数的返回值。
2)只用"“表达式”",不用"“语句”","“表达式”"(expression)是一个单纯的运算过程,总是有返回值。原因是函数式编程的开发动机,一开始就是为了处理运算(computation),不考虑系统的读写(I/O)。"“语句”“属于对系统的读写操作,所以就被排斥在外。不要有不必要的读写行为,保持计算过程的单纯性。
3)FP 语言不包含任何赋值语句。变量值一旦被指派就永远不会改变。而且,调用函数只会计算出结果 ── 不会出现其他效果。
4)易于”“并发编程”",不需要考虑"“死锁”"(deadlock),因为它不修改变量,所以根本不存在"“锁”"线程的问题。多核CPU是将来的潮流,所以函数式编程的这个特性非常重要。
5)代码的热升级。函数式编程没有副作用,只要保证接口不变,内部实现是外部无关的。所以,可以在运行状态下直接升级代码,不需要重启,也不需要停机。
6)函数式编程常被认为严重耗费在CPU和存储器资源。
王垠评论说,函数式语言的程序员不要老是觉得自己掌握了真理,有什么魔法,其实没有。正如他在Cornell的教授所说,任何编程语言中都没有什么魔法或者万灵丹药,使其使用者成为好的程序员。
他还认为,相比之下面向对象的程序员现在越来越不那么热衷于门派之争,至少他们忙于解决现实问题,而非语言自己的困难。