很久没上jdon了,回来看了下,回过贴,提到一个词:非冯诺依曼。(尽管我是JAVA向的,但我热衷的还是函数和逻辑式。在我每次的探索中,总发现指令一直是约束程序员思维的东西,但我每次都否定不了,正因为冯诺依曼体系。发现这一点后,我到达了新天地——非冯诺依曼体系。以下用“冯”代表冯诺依曼体系,“非冯”代表非冯诺依曼体系)
很多人心里都有这样的想法,“冯”就是真理,无论我们搞什么理论都建立在它之上。曾经各种语言的比较,都没有从计算机体系上找问题,各种效率论来拒绝人们的进步的探索。为什么?因为这块基石不是那么容易撬动,同时这是大多数程序员依赖的东西,否定它就等于否定自己的知识基石。只要这块基石动不了或不敢动,那么不适合“冯”的语言就要面对这快巨石,一种语言要面对巨石,而另一种不需要面对巨石,这胜负一开始就决定了(巨石不单单是效率问题)。
在“非冯”势力中,有两种比较普遍的说法来指出“冯”的问题所在(同时这样问题,与指令式和函数、逻辑式之间的问题有着巨大的关系)。
说法一:“冯”是指令向的,传统“冯”是流式处理,效率问题使得并行“冯”的出现,但问题依然存在:
1、仍然需要指出执行顺序的程序计数器。
2、共享储存。
说法二:这种说法几乎就跟语言对比相似之极。
1、指令与数据混合储存,内存都存了指令和数据都在一起。提高了复杂性。
2、存储和指令执行都是一维性的。
3、同时软件和硬件完全分离,使得存在冯.依曼语义间隔。(指令的高级语言都有问题,更别说函数和逻辑了)
这些问题促使了“冯·诺依曼体系结构-非诺依曼化”。
“冯·诺依曼体系结构-非诺依曼化”
这东西其实是jdon上一直承认着,只是不知道而已,就是多核计算和多计算机并行计算。而在此基础上我们一直进行着并行计算的探索和研究。实际上,还有一种手段进行非“冯”化:只要数据准备准备好,就可以计算,而非一步步执行,这方式是从根本上非“冯”化,但仍在研究中(倘若存在,函数和逻辑可以完全击垮指令)。
非“冯”化最具代表性的就是“哈佛结构”。
后话:冯诺依曼体系就是指令横行的世界,函数与逻辑要在上面运行,必须要绕不少弯路,本来非常简单的问题,却要巨大的消耗。所以,乖乖接受指令的统治吧。