冯·诺依曼在计算机科学方面的主要贡献是什么?

冯·诺依曼在计算机科学方面的主要贡献是什么?

我们写智能手机上的App,和写个人电脑的客户端应用似乎没有什么差别,都是通过“高级语言”这样的编程语言撰写、编译之后,一样是把代码和数据加载到内存里来执行。这是为什么呢?因为,无论是个人电脑、服务器、智能手机、还是Raspberry Pi这样的微型卡片机,都遵循着同一个“计算机”的抽象概念。

这是怎么样的一个“计算机”呢?这其实就是,计算机祖师爷之一冯·诺依曼提出的冯·诺依曼体系结构(Von Neumann architecture),也叫存储程序计算机。 这里面其实暗含了两个概念,一个是“可编程”计算机,一个是“存储”计算机。 说到“可编程”,估计你会有点懵,你可以先想想,什么是“不可编程”。计算机是由各种门电路组合而成的,然后通过组装出一个固定的电路板,来完成一个特定的计算程序。一旦需要修改功能,就要重新组装电路,这样的话,计算机就是“不可编程“的,因为程序在计算机硬件层面是”写死“的。最常见的就是老式计算器,电路板设计好了加减乘除,做不了任何计算逻辑固定之外的事情。

再来看”存储“计算机。这其实是说,程序本身是存储在计算机的内存里,可以通过加载不同的程序来解决不同的问题。有”存储程序计算机“,自然也有不能存储程序的计算机。典型的就是早年的”Plugboard“这样的插线板式的计算机。整个计算机就是一个巨大的插线板,通过在板子上不同的插头或者接口的位置插入线路,来实现不同的功能。这样的计算机自然是”可编程“的,但是编写好的程序不能存储下来供下一次加载使用,不得不每次要用到和当前不同的”程序“的时候,重新插板子,重新”编程“。

可以看到,无论是”不可编程“还是”不可存储“,都会让使用计算机的效率大大下降。而这个对于效率的追求,也就是”存储程序计算机“的由来。可以说,冯·诺依曼体系结构确立了我们现在每天使用的计算机硬件的基础架构。