Update 13-Functional-Programming.md

This commit is contained in:
LingCoder
2019-08-15 17:00:36 +08:00
committed by GitHub
parent 6744fd0e65
commit 0646516ef4

View File

@@ -27,7 +27,7 @@ OOobject oriented面向对象是抽象数据FPfunctional programm
更好的是,“不可变对象和无副作用”范式解决了并发编程中最基本和最棘手的问题之一(当程序的某些部分同时在多个处理器上运行时)。这是可变共享状态的问题,这意味着代码的不同部分(在不同的处理器上运行)可以尝试同时修改同一块内存(谁赢了?没人知道)。如果函数永远不会修改现有值但只生成新值,则不会对内存产生争用,这是纯函数式语言的定义。 因此,经常提出纯函数式语言作为并行编程的解决方案(还有其他可行的解决方案)。
需要提醒大家的是,函数式语言背后有很多动机,这意味着描述它们可能会有些混淆。它通常取决于各种观点:为并行编程”,“代码可靠性”和“代码创建和库复用”。[^1] 还请记住,程序员会利用函数式编程高效创建更健壮的代码这一观点存在部分假设性。虽然已有一些好的范例[^2],但我们还不能证明纯函数式语言就是解决编程问题的最佳方法。
需要提醒大家的是,函数式语言背后有很多动机,这意味着描述它们可能会有些混淆。它通常取决于各种观点:为并行编程”,“代码可靠性”和“代码创建和库复用”。[^1] 关于函数式编程高效创建更健壮的代码这一观点存在部分争议。虽然已有一些好的范例[^2],但还不足以证明纯函数式语言就是解决编程问题的最佳方法。
FP 思想值得融入非 FP 语言,如 Python。Java 8 也从中吸收并支持了 FP。我们将在此章探讨。