还有另一个标题为“功能并行的编程语言:F#vs Haskell”的主题,其中OP声明“功能编程具有不可变数据结构,没有副作用,本质上适用于并行编程。”
Jon Harrop在他的回答中指出,“并行性完全取决于性能和纯度会降低性能。如果你的目标是获得不错的性能,那么纯函数式编程就不是一个好的起点。”好吧,我不打算考虑功能编程是否真正提高了性能;它似乎是一个实施问题。我感兴趣的是概念层面:
“不可变数据”和“无副作用”是否易于并行化?它们是充足条件还是必要条件?它们是否足以保证数据独立性或可交换性?我们赞赏对学术文献的参考。
答案 0 :(得分:0)
"不可变数据"和#34;免于副作用"容易并行化需要两个?
可以从另一个线程观察到的数据突变是副作用,所以只是没有副作用就足够了。 :)
他们是充足的条件还是必要条件?
条件是什么?
这些不使用并行性的先决条件。所有这一切都说明了它让事情变得更容易。
看,就好像有人说: Java本身适用于避免缓冲区溢出的编程,因为它没有(可操作的)指针。
这并不意味着你不能编写一个不会在C中超出其缓冲区的程序。这样做更难。