0

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

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

Lambda 演算和函数式编程

ii. Von Nueman 系统架构和命令式编程

我几乎在 (i) 中获得了联系,但在 (ii) 中我一无所获。但是,从巴库斯的图灵讲座中,我认为两者之间存在某种联系。在许多地方,我什至看到命令式范式写成“冯·努曼范式”。那么冯诺依曼系统架构是否在某种程度上有助于命令式语言的发展,如果我们遵循其他一些系统架构——比如霍华德架构,情况是否会有所不同?

4

1 回答 1

0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

于 2018-09-25T02:11:53.187 回答