Link 在计算模型、计算机系统架构和编程范例之间

Link between models of computation, computer system architectures and programming paradigms

我已经阅读了一段时间有关这些主题的内容,并且可能已经了解了一些内容。但我对一些联系感到困惑:

我。图灵机(准确地说是 RAM 模型)和命令式编程

Lambda 微积分和函数式编程

二。 Von Nueman 系统架构和命令式编程

我几乎在 (i) 中获得了连接,但在 (ii) 中却一无所获。 但是,从Turing lecture of Backus来看,我觉得两者之间有一些link。在很多地方我什至看到命令式范式写成'Von Nueman Paradigm'。那么,冯诺依曼系统架构是否以某种方式帮助了命令式语言的发展,如果我们遵循其他一些系统架构(比如霍华德架构),情况会有所不同吗?

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

…we can crudely characterize three classes of models for computing systems…

2.2.1 Simple operational models. Examples: Turing machines, various automata. …

2.2.2 Applicative models. Examples: Church's lambda calculus [5], Curry's system of combinators [6], pure Lisp [17], functional programming systems described in this paper. Foundations: concise and useful. History sensitivity: no storage, not history sensitive. Semantics: reduction semantics, no states. Program clarity: programs can be clear and conceptually useful.

2.2.3 Von Neumann models. Examples: von Neumann computers, conventional programming languages. Foundations: complex, bulky, not useful. History sensitivity: have storage, are history sensitive. Semantics: state transition with complex states. Program clarity: programs can be moderately clear, are not very useful conceptually.

The above classification is admittedly crude and debatable.

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

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

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

一种看待这个问题的方法是,FP 语言提供了对冯诺依曼体系结构物理管道的完全抽象。但是,这确实回避了一个问题,即根本上 不同的 架构是否更适合函数式语言。

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

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

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

现在,据我了解(在这里我有点偏执),FPGA 是一种相对便宜的方式,可以让研究人员了解这些想法在物理世界中的表现如何。而不是设计和印刷集成电路,然后从例如Intel 或 AMD,院士们可以在单个现成的 FPGA 上编写门阵列(同样,如果我理解正确的话——我不是硬件专家)。

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


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