Architecture 计算模型、计算机系统架构和编程范例之间的联系

Architecture 计算模型、计算机系统架构和编程范例之间的联系,architecture,turing-machines,paradigms,imperative-programming,von-neumann,Architecture,Turing Machines,Paradigms,Imperative Programming,Von Neumann,我已经阅读了一段时间关于这些主题的文章,可能已经理解了一些东西。但我对一些联系感到困惑: 一,。图灵机(确切地说是RAM模型)&命令式编程 Lambda演算与函数编程 二,。vonnueman系统架构与命令式编程 我几乎在(I)中得到了连接,但在(ii)中我什么也没有得到。 然而,从这个角度来看,我认为两者之间存在某种联系。在许多地方,我甚至看到命令式范式被写成“冯·努曼范式”。那么,冯·诺依曼系统架构是否在某种程度上有助于命令式语言的发展?如果我们遵循其他系统架构,比如霍华德架构,情况是否会有

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

一,。图灵机(确切地说是RAM模型)&命令式编程

Lambda演算与函数编程

二,。vonnueman系统架构与命令式编程

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

你链接的巴克斯论文直接解决了这一问题(重点是我的):

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

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

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

2.2.3冯·诺依曼模型。例子:冯·诺依曼 计算机,常规编程语言。 基础:复杂、笨重、无用。历史敏感度: 具有存储,对历史记录敏感。语义:状态 具有复杂状态的转换。节目清晰度:节目 可以适度清晰,在概念上不是很有用

诚然,上述分类是粗俗的 值得商榷

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

  • 冯·诺依曼体系结构允许(程序员编写的)指令更新内存(即改变状态)
  • 函数式编程没有可变状态的概念
FP语言,例如Haskell,目前编译为在冯·诺依曼计算机上执行的命令式机器代码。函数式程序员通常避免考虑在一定程度上改变内存,宁愿由编译器来解决这一部分

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

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

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

它可以使整个程序并行化,因为在FP中,函数应用程序何时执行通常无关紧要,因为不存在可变状态,因此不存在可能的争用条件。唯一可能的延迟是依赖可用性方面——您是否有输入。如果您这样做,那么将输入提供给函数总是安全的

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

初步结果似乎很有希望!但在实践中,我们并没有看到硬件制造商蜂拥而至,为FP语言生产整个新的芯片线。现有的知识、基础设施和对英特尔CPU之类的产品的需求都是巨大的。命令式编程仍然比函数式编程普遍得多,而且在不久的将来似乎不太可能改变


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