gpt4 book ai didi

scala - 命令式与功能式——理解冯·诺依曼瓶颈

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

在 Coursera 类(class) - Scala 中的函数式编程 - Martin Odersky 谈到命令式编程如何受到冯诺依曼瓶颈的限制,因为它主要处理可变状态,因此也处理赋值和取消引用。

冯诺依曼瓶颈是处理器和内存之间读取/写入数据所涉及的延迟。

我正在努力理解两件事,希望有人能帮助阐明它:-

  1. 如果我们在编写 Scala 程序时只使用不可变对象(immutable对象)——那么当我们在构造不可变对象(immutable对象)时用数据初始化它时,我们仍然有赋值,但没有进一步的重新赋值。当我们想要取消引用一个不可变对象(immutable对象)时,它仍然有可能不再存在于缓存中,并且必须再次从主内存中获取 -> 延迟。

    我很难理解使用不可变数据结构如何帮助解决冯诺依曼瓶颈。任何人都可以帮助我了解它的情况吗?

  2. 在他的类(class)讲座中,Martin Odersky 在谈到冯诺依曼瓶颈时陈述了以下内容:-

    Imperative programming conceptualises programs word for word which becomes a problem for scalability since we are dealing with data structures at too low a level. Functional programming languages (in general) tend to focus on defining theories and techniques for working with higher-level abstractions such as collections, polynomials, documents etc.

    我知道使用更高级别的抽象确实可以帮助开发人员提高开发工作的效率,但是抽象如何帮助解决冯诺依曼瓶颈?

最佳答案

您需要阅读 John Backs 发表的原始论文“Can Programming Be liberated from the Von Neumann Style? A functional style and its algebra of programs”。它基本上谈论两种瓶颈,一种是物理硬件限制,另一种是由于程序员思考语言的方式而形成的一种概念瓶颈。关于你的第二个问题。由于早期的语言更接近各自的硬件实现,程序员的想法过去常常模仿事件的顺序流。函数式语言为我们提供了一种查看程序的新方法,其中并行执行或对一组数据进行操作。

关于第一个问题我想重复来自 wiki.c2.com 的评论

“编程语言的选择对硬件有什么影响?编译运行在冯·诺依曼机上的函数式语言仍然会遇到瓶颈。”答案是 ReferentialTransparency——它使并行计算更容易处理(并且能够自动化)。有效地并行化命令式语言仍然是一个活跃的研究课题。

http://wiki.c2.com/?CanProgrammingBeLiberatedFromTheVonNeumannStyle

关于scala - 命令式与功能式——理解冯·诺依曼瓶颈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43922355/

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