为什么这两年函数式编程又火起来了?

函数式和过程式之间的Holy War在上个世纪就以过程式编程的全面胜出告终,函数式编程除了在学术界和人智领域外,几乎无人问津。到21世纪初,MIT都不…
关注者
1,688
被浏览
654,694
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

很赞同狗大说的,根本的原因是摩尔定律不适用。cpu的如果不搞出什么量子的玩意,基本上也就是堆核心,并行程序会大大提升效率,但是程序的稳定正确运行又是一问题,oo对这个的处理就显得有些棘手,比如说java,各种锁,各种同步。

下面引用下

什么是函数式编程思维? - 用心阁的回答 - 知乎

中的片段

函数式编程的好处
由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好处主要是不可变性带来的。没有可变的状态,函数就是引用透明(Referential transparency)的和没有副作用(No Side Effect

一个好处是,函数即不依赖外部的状态也不修改外部的状态,函数调用的结果不依赖调用的时间和位置,这样写的代码容易进行推理,不容易出错。这使得单元测试和调试都更容易。

不变性带来的另一个好处是:由于(多个线程之间)不共享状态,不会造成资源争用(Race condition),也就不需要用来保护可变状态,也就不会出现死锁,这样可以更好地并发起来,尤其是在对称多处理器(SMP)架构下能够更好地利用多个处理器(核)提供的并行处理能力。

出于对效率,安全,稳定以及运行速度的追求,在多核心cpu上并行的搞起来编程会火,将来也是大势所在(个人想法,勿喷)。

然后说java也在努力的改革,进步,在像函数式“进化”,比如说java8提供的Stream流,lambda,努力将函数(方法)提升为一等公民,Stream中的透明化,无态化都流露着函数式的思想。虽然java的fp现在可能走得是oop的极端表现形式,但是也从另一个侧面表达了fp的优点和将来大势所在。