gpt4 book ai didi

parallel-processing - 功能语言在本质上是否比其OO或命令表亲更可并行化?

转载 作者:行者123 更新时间:2023-12-04 08:08:08 25 4
gpt4 key购买 nike

我一直在阅读和思考这个问题。嗡嗡声似乎是在多核 future ,功能语言将变得越来越流行。我是函数编程的相对菜鸟。我唯一的接触是学术方面的,没有什么复杂的东西可以使这种语言真正步入正轨。

因此,据我了解,纯函数可以轻松透明地并行化。这是一个很棒的功能,因为这意味着编写线程代码没有麻烦。但是,它似乎对串行代码没有太大的帮助。

Example:

fooN( ... (foo3(foo2(foo1(0)))))

像这样的串行调用似乎是一个常见的,有时是不可避免的问题。对我来说,这些是为什么并行化如此困难的根本原因。有些任务只是(或看起来)是高度连续的。具有“实用的思维方式”是否可以让您更好地分解一些看似串行的任务?是否有任何现有的功能语言提供透明的机制来更好地并行化高度串行的代码?最后,功能语言在本质上是否比OO或命令式语言更可并行化,为什么?

最佳答案

由于纯函数,功能性语言比命令性和OO语言更可并行化。但是,您是完全正确的,如果您具有这些类型的数据依赖项,则无法并行化它。函数式编程的主要值(value)在于使代码中存在的并行性更容易发现和推理,因为只有数据相关性(而不是共享的可变状态)才可以阻碍。

实际上,由于大多数普通的程序员很难使用纯函数式语言工作,并且由于完全禁止可变状态的Draconian策略效率低下,因此允许强制性地编写单个函数体的想法引起了一些议论,但是却不允许这样做。跨功能的效果。换句话说,所有要并行化的功能都必须是纯函数。然后,您可以为局部变量设置可变状态,以使代码更易于编写和更高效,但仍允许对这些纯函数的调用的安全,轻松自动并行化。例如,D语言的2.0分支正在对此进行探讨。

关于parallel-processing - 功能语言在本质上是否比其OO或命令表亲更可并行化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/633167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com