【问题标题】:Link between models of computation, computer system architectures and programming paradigms计算模型、计算机系统架构和编程范式之间的联系
【发布时间】:2019-01-27 17:04:44
【问题描述】:

我已经阅读这些主题有一段时间了,可能已经理解了一些东西。但我对一些联系感到困惑:

我。图灵机(确切地说是 RAM 模型)和命令式编程

Lambda 微积分和函数式编程

二。 Von Nueman 系统架构和命令式编程

我在 (i) 中几乎得到了连接,但在 (ii) 中我什么也没得到。 但是,从Turing lecture of Backus 来看,我认为这两者之间存在某种联系。在许多地方,我什至看到命令式范式写成“Von Nueman Paradigm”。那么冯诺依曼系统架构是否在某种程度上有助于命令式语言的发展,如果我们遵循其他一些系统架构(比如霍华德架构),情况是否会有所不同?

【问题讨论】:

    标签: architecture turing-machines paradigms imperative-programming von-neumann


    【解决方案1】:

    您链接的 Backus 的论文直接解决了这个问题(强调我的):

    ……我们可以粗略地描述 计算系统的三类模型……

    2.2.1 简单的操作模型。示例:图灵 机器,各种自动机。 …

    2.2.2 应用模型。示例:教堂的 lambda 演算 [5],Curry 的组合子系统 [6], 纯 Lisp [17],函数式编程系统描述 在本文中。基础:简洁实用。 历史敏感度:无存储,不敏感历史。语义: 归约语义,没有状态。程序清晰度: 程序可以清晰且概念上有用。

    2.2.3 冯诺依曼模型。例子:冯诺依曼 计算机、传统编程语言。 基础:复杂、笨重、无用。历史敏感性: 有存储空间,对历史敏感。语义:状态 具有复杂状态的过渡。程序清晰度:程序 可以适度清晰,在概念上不是很有用。

    上述分类无疑是粗略的 值得商榷。

    如果我能进一步提炼这个:

    • 冯诺依曼架构允许(程序员编写的)指令更新内存(即改变状态)。
    • 函数式编程没有可变状态的概念。

    FP 语言,例如Haskell,目前编译为在冯诺依曼计算机上执行的命令式机器代码。函数式程序员通常会在一定程度上避免考虑改变内存,而是更喜欢编译器来解决这个问题。

    看待这一点的一种方式是,FP 语言提供了对冯诺依曼架构的物理管道的完全抽象。然而,这确实引出了一个问题,即根本不同的架构是否更适合函数式语言。

    这将我们带到:the Reduceron。目前形式的 Reduceron 是一种现场可编程门阵列 (FPGA),它展示了为 FP 评估量身定制的物理机器可能具有的潜在优势。

    简而言之,Reduceron 将一个函数式程序(一个函数应用程序的无状态图)分解为大量并行函数应用程序的集合。然后它在输入数据上运行这些并行应用程序。

    它可以避免并行化整个程序,因为在 FP 中,执行函数应用程序何时通常并不重要,因为没有可变状态,因此没有可能的竞争条件。唯一可能的延迟是在依赖可用性方面——你有没有输入。如果这样做,将输入提供给函数始终是安全的。

    现在,据我了解(在这里我有点冒险),对于研究人员来说,FPGA 是一种相对便宜的方式来了解这些想法如何在物理世界中成立。而不是设计和打印集成电路,然后从例如订购批发号码。 Intel 或 AMD,院士们可以在一个单独的现成 FPGA 上编程一个门阵列(同样,如果我理解正确的话——我不是硬件专家)。

    初步结果看起来很有希望!但在实践中,我们并没有看到硬件制造商蜂拥而至为 FP 语言推出全新的芯片系列。现有的知识、基础设施和对英特尔 CPU 之类的东西的需求是巨大的。命令式编程仍然比函数式编程更为普遍,而且这种情况在不久的将来似乎不太可能改变。


    旁注:我假设您关于“霍华德”架构的问题是“哈佛”的拼写错误。就本主题而言,哈佛架构与冯诺依曼架构非常相似。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-11
      • 2015-11-28
      • 2019-02-13
      • 1970-01-01
      • 2014-10-09
      • 2019-05-15
      • 2018-10-26
      • 1970-01-01
      相关资源
      最近更新 更多