本帖最后由 freebsder 于 2020-2-13 20:49 编辑
冯 诺依曼结构是计算机器的一种顶层设计,对应的可计算性的顶层设计是图灵机(和等价的邱奇lambda演算,对应LISP机)。然后才落地到各种具体的指令集流水线执行机构等等物理内容。
哈佛只是冯 诺依曼的一种改进,最主要改进是把数据和代码分开。哈佛本身就是一个加强的冯 诺依曼,因为这些计算机器的顶层设计没有变化。
数据和代码分开在当时的历史时期是合适的,毕竟硬件的执行效率有限,哈佛那样改进的实现更经济自然直接。(这并不是说造不出来合在一起的,而是说市场选择了前者)。
数据和代码的统一所具备的抽象性却一步一步从学术走向工业。虽然现在几乎所有的机器都是冯 诺依曼结构,由于lambda演算的等价性,可以在冯 诺依曼结构的机器上实现这种等价机器,也就是lisp语言。毫无疑问对现代编程语言影响最大的就是LISP,SMALLTALK和C。
不要把计算机语言看作存粹软件的东西,计算机语言其实就是一台抽象机器,对同样的问题提供不同程度的表达能力。比如x86汇编语言,也就是你们所熟知的CISC,比如arm汇编,也就是你们熟知的RISC。
现代硬件技术的发展已经可以在现有的冯 诺依曼机器上实现各种抽象机器的虚拟机,甚至CISC内部以RISC的微代码的方式来实现(没记错的话是奔腾架构以后)。
多说一句,图灵机几乎可以对应到现在编程语言的命令式编程模式,邱奇lambda演算现在可以对应到火爆全网的函数式编程模式。
|