您链接的 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 之类的东西的需求是巨大的。命令式编程仍然比函数式编程更为普遍,而且在不久的将来似乎不太可能改变。
旁注:我假设您关于“霍华德”架构的问题是“哈佛”的拼写错误。就本主题而言,哈佛架构与冯诺依曼架构非常相似。