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



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

i. 图灵机(确切地说是 RAM 模型(和命令式编程

Lambda Calculus & Functional Programming

von Nueman System Architecture & Imperative Programming

我几乎在 (i( 中得到了连接,但我没有得到 (ii( 的任何连接。 但是,从Backus的图灵讲座中,我认为两者之间存在某种联系。在许多地方,我甚至看到命令式范式被写成"冯·纽曼范式"。那么,冯·诺伊曼系统架构是否以某种方式帮助了命令式语言的发展,如果我们遵循其他系统架构——比如霍华德架构,情况会有所不同吗?

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

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

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

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

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

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

如果我能进一步提炼一下:

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

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

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

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

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

它可以并行化整个程序,因为在FP中,执行函数应用程序通常无关紧要,因为没有可变状态,因此没有可能的竞争条件。唯一可能的延迟是在依赖项可用性方面 - 您是否有输入。如果这样做,将输入馈送到函数始终是安全的。

现在,据我所知(在这里我有点冒昧(,FPGA是一种相对便宜的方式,研究人员可以看到这些想法在物理世界中是如何站得住脚的。院士们无需设计和打印集成电路,然后从英特尔或AMD等公司订购批发号码,只需在单个现成的FPGA上编写门阵列(同样,如果我理解正确的话 - 我不是硬件人员(。

初步结果似乎非常有希望!但在实践中,我们没有看到硬件制造商蜂拥而至,真正为FP语言推出全新的芯片产品线。现有的知识、基础设施和对英特尔 CPU 等产品的需求是巨大的。命令式编程仍然比函数式编程更常见,而且在不久的将来似乎不太可能改变。


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

最新更新