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

函数式编程的好处由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好处主要是不可变性带来的。没有可变的状态,函数就是引用透明(Referential transparency)的和没有副作用(No Side Effect)。一个好处是,函数即不依赖外部的状态也不修改外部的状态,函数调用的结果不依赖调用...
为什么这两年函数式编程又火起来了呢?
函数式编程的好处由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好处主要是不可变性带来的。没有可变的状态,函数就是引用透明(Referential transparency)的和没有副作用(No Side Effect)。一个好处是,函数即不依赖外部的状态也不修改外部的状态,函数调用的结果不依赖调用的时间和位置,这样写的代码容易进行推理,不容易出错。这使得单元测试和调试都更容易。不变性带来的另一个好处是:由于(多个线程之间)不共享状态,不会造成资源争用(Race condition),也就不需要用锁来保护可变状态,也就不会出现死锁,这样可以更好地并发起来,尤其是在对称多处理器(SMP)架构下能够更好地利用多个处理器(核)提供的并行处理能力。

1.根本原因是穆尔定律不适用。如果CPU不能制造任何量子物质,它基本上就是反应堆的核心。并行程序将大大提高效率,但程序的稳定运行也是一个问题。面向对象的处理,这是有难度的,例如,java,锁和各种同步。
2.由于追求效率、安全、稳定和速度,在多核CPU上并行编程会引起火灾。然后java也努力改革和进步,如功能的演变,如Java8,λ提供流,努力提高函数(方法)来的一等公民。流的透明度与非表达性揭示功能思维。虽然java的FP现在可能走在OOP的极端形式,它也表达了FP的优势和未来。

3.cpu的性能提升将体现在核数增加,这样并行的程序运行速度会越来越快。并行的程序的写法就是找出不能并行的地方,其他地方都尽量并行。
如果要这样写,最需要避免的事情就是赋值。函数式编程的本质就是,规避掉“赋值”。
2018-03-20
mengvlog 阅读 40 次 更新于 2025-10-29 19:09:17 我来答关注问题0
檬味博客在线解答立即免费咨询

编程相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部