函数式编程是一门古老的技术,从上个世纪60年代Lisp语言诞生开始,各种方言层出不穷。各种方言带来欣欣向荣的生态的同时,也给兼容性带来很大麻烦。于是更种标准化工作也在不断根据现有的实现去整理,比如Lisp就定义了CommonLisp规范,但是一大分支scheme是独立的分支。另一种函数式语言ML,后来也标准化成StandardML,但也拦不住另一门方言ocaml。后来的实践干脆成立一个委员会,定义一个通用的函数式编程语言,这就是Haskell。后来Haskell被函数式原教旨主义者认为是纯函数式语言,而Lisp,ML系都有不符合纯函数式的地方。
不管纯不纯,函数式编程语言因为性能问题,一直影响其广泛使用。直到单核性能在Pentium4时代达到顶峰,单纯靠提升单线程性能的免费午餐结束,函数式编程语言因为其多线程安全性再次火了起来,先有Erlang,后来还有Scala,Cloju等。
函数式编程的思想也不断影响着传统编程语言,比如Java8开始支持lambda表达式,而函数式编程的大厦最初就是基于lambda计算构建起来的。
不过比起后端用Java的同学对于函数式编程思想是可选的,对于前端同学变成了必选项。
前端同学为什么要学习函数式编程思想?
React框架的组件从很早开始就是不仅支持类式组件,也支持函数式的组件。
比如下面的类继承的方式更符合大多数学过面向对象编程思想同学的心智:
classWel