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