功能编程 – 有人可以澄清这个Joel On Software引用的内容:(功能程序没有副作用)

我今天读了Joel On Software,跑过this quote

Without understanding functional
programming, you can’t invent
MapReduce, the algorithm that makes
Google so massively scalable. The
terms Map and Reduce come from Lisp
and functional programming. MapReduce
is, in retrospect, obvious to anyone
who remembers from their
6.001-equivalent programming class that purely functional programs have
no side effects and are thus trivially
parallelizable.

当他说功能性程序没有副作用时,他的意思是什么?而这又如何平行化呢?

Let me wikipedia it for you

简单来说,纯粹的函数只是根据给定的参数来计算事物并返回一个结果。

写入屏幕或改变全局变量(或数据成员)是一个副作用。依赖于参数中给出的数据以外的数据也使您的函数非纯,尽管它不是副作用。

编写“纯函数”可以更容易地并行地调用它的许多实例。这主要是因为纯粹的,你可以确定它不会影响外部世界,不依赖于外界的信息。

翻译自:https://stackoverflow.com/questions/2450424/can-someone-clarify-what-this-joel-on-software-quote-means-functional-programs

转载注明原文:功能编程 – 有人可以澄清这个Joel On Software引用的内容:(功能程序没有副作用)