和姜咏江老师讨论图灵机与冯·诺伊曼机的区别

来源:互联网 发布:apache ant 1.9.6安装 编辑:程序博客网 时间:2024/05/21 07:47

姜老师的博文:

《图灵与冯·诺伊曼的区别》 姜咏江

本文引用地址:http://blog.sciencenet.cn/blog-340399-860479.html  转载请注明来自科学网博客,并请注明作者姓名。


和姜老师探讨:

《图灵的秘密-他的生平,思想及论文解读》一书还没看完且对纯数学而言,俺数学基础只是高中水平,因此俺下面的认识必有不少错误之处,望指正。


1)"最早人们将机器的工作主要放到数学计算上,因而数学计算是焦点。图灵机解决的正是这个问题。在冯诺依曼计算机中,一种数学计算已经变成了一条指令。"
================================
[a]就数学家来说,最大的问题就是如何证明数学定理在"无限"上也正确(无矛盾),大家都学习过的一个基本方法就是数学归纳法。但数学归纳法的使用很依赖问题(要证明的数学定理)和技巧。
[b]大数学家康托将对无限的探讨映射到了实数上(康托的连续统),因此,对数学家而言,讨论实数中的问题就是讨论"所有"无限问题,这也是为何作为外行的俺看得到的当时文章多是关于数的。而大数学家希尔伯特提出的20世纪的23个23个最重要的数学问题中第一个就是关于数(康托的连续统基数问题),第二个就是关于计算(算术公理系统的无矛盾性)的。故,作为当时焦点的数,并不是一般人所理解的"数学计算"中的数。
[c]图灵是数学家,而非计算机科学家(这样说对祖师爷有点大不敬,但仔细想一下,当时连计算机都没有,又何来计算机科学家)。因此,图灵机的最初目的不是计算,而是为了解决(证明)数学问题。
[d]希尔伯特第二问:欧氏几何的无矛盾性可以归结为算术公理的无矛盾性。希尔伯特曾提出用形式主义计划的证明论方法加以证明。注意"形式主义"这四个字,最形式主义的证明方法就是机械化,而图灵机本身就是机械。图灵认为:一切直觉上能计算的函数都可用图灵机计算,这意味着他解决了可计算的形式主义证明!因此,图灵机是试图证明数学问题的"副产品",而非专为数学计算而设计。虽然如此,图灵指出了计算机械化的理论基础,因此俺们尊他为我们的祖师爷。


2)"但是,图灵的指令系统单一不够完善,总结起来主要有两条。第一,没能将指令存储起来重复使用。第二,没能形成实现程序结构设计。","图灵机欠缺的这两点恰被冯诺依曼提出的程序数据存储的思想解决了。"
================================
[a]图灵机本身已解决了:程序[转移状态表],指令[转移状态表的一部分]和函数[转移状态表的展开]。
[b]当时的模拟计算机及稍后的机电计算机都是针对特定问题"可编程"的,每次改变计算问题,都要重新"编程":重连电缆,扳动开关。图灵机似乎也没突破这一点:对不同的问题要用不同的转移状态表,虽然这个转移状态表是可以构造出来的。这意味着只有深入了解了计算机的构造才能用它"编程"(想象一下如果现在我们要了解CPU的结构,才能用微指令来直接给CPU中的电路编程的话,......)。
[c]冯爷最大的贡献不是"指令",也不是"指令存储",而是将指令视为数据!(故在冯诺依曼计算机中将指令和数据放在一起是理所当然的)由此,才有以后通用的计算机的出现,才有编译器,OS等等等等,抽象(隔离)程度越来越高,计算机行业的分工越来越细,计算机的应用才能越来越广。


图灵机和冯诺依曼计算机的区别是"物理编程"和"数字编程"的区别。


[4]davidli91  2015-1-18 11:54
......
模拟计算机,机电计算机也能“重复使用”,只是编程要重接电缆,扳动开关,重设电路。程序(电路图)(人工)重复使用了。

[5]davidli91  2015-1-18 11:57

另外,图灵机是抽象理论计算机,冯诺依曼计算机是实际计算机的抽象。我们要讨论两者实质不同才有意义。


[6]davidli91  2015-1-18 12:54
其次,在同一个存储器中,指令数据和程序数据也是分开的。
============================
姜老师应该知道在内存以KB为单位时代的一项技巧:OVERLOAD。
即在一段程序A的最后执行load指令,将下一段程序B调入内存,然后jump到B继续执行。
这里的程序B的代码,在load时是程序数据,在执行时是指令数据。虽然,其始终是同一堆数据。
这里的关键是冯爷的认识:指令也是数据。到底是做为指令还是做为数据,看处理它的前一层机器对它是如何认识(执行)的。

0 0
原创粉丝点击