作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在阅读和思考这个问题。嗡嗡声似乎是在多核 future ,功能语言将变得越来越流行。我是函数编程的相对菜鸟。我唯一的接触是学术方面的,没有什么复杂的东西可以使这种语言真正步入正轨。
因此,据我了解,纯函数可以轻松透明地并行化。这是一个很棒的功能,因为这意味着编写线程代码没有麻烦。但是,它似乎对串行代码没有太大的帮助。
Example:
fooN( ... (foo3(foo2(foo1(0)))))
最佳答案
由于纯函数,功能性语言比命令性和OO语言更可并行化。但是,您是完全正确的,如果您具有这些类型的数据依赖项,则无法并行化它。函数式编程的主要值(value)在于使代码中存在的并行性更容易发现和推理,因为只有数据相关性(而不是共享的可变状态)才可以阻碍。
实际上,由于大多数普通的程序员很难使用纯函数式语言工作,并且由于完全禁止可变状态的Draconian策略效率低下,因此允许强制性地编写单个函数体的想法引起了一些议论,但是却不允许这样做。跨功能的效果。换句话说,所有要并行化的功能都必须是纯函数。然后,您可以为局部变量设置可变状态,以使代码更易于编写和更高效,但仍允许对这些纯函数的调用的安全,轻松自动并行化。例如,D语言的2.0分支正在对此进行探讨。
关于parallel-processing - 功能语言在本质上是否比其OO或命令表亲更可并行化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/633167/
我是一名优秀的程序员,十分优秀!