我一直在网上搜索,我发现有些矛盾的答案。一些消息来源断言,当且仅当它同时具有条件分支和无条件分支(我猜这有点多余)时,语言/机器/你有什么是图灵完备的,有人说只需要无条件,其他人只需要条件是必须的。
德国 Z3(显示于 1941 年 5 月工作)由 Konrad Zuse 设计。它是第一台通用数字计算机,但它是机电的,而不是电子的,因为它使用继电器来完成所有功能。它使用二进制数学进行逻辑计算。它可以通过穿孔带进行编程,但缺少条件分支。虽然不是为图灵完备性而设计的,但它意外地是,正如在 1998 年发现的那样(但为了利用这种图灵完备性,需要复杂、聪明的 hack)。
究竟是什么复杂、巧妙的技巧?
R. Rojas 的 1998 年论文摘要也指出(请注意,我没有读过这篇论文,它只是来自 IEEE 的一个片段。):
计算机 Z3 由 Konrad Zuse 在 1938 年至 1941 年间制造,只能执行在穿孔磁带中编码的固定浮点算术运算序列(加法、减法、乘法、除法和平方根)。从计算历史的角度来看,一个有趣的问题是这些操作是否足以进行通用计算。该论文表明,事实上,包含这些算术指令的单个程序循环可以模拟任何图灵机,其磁带具有给定的有限大小。这是通过纯算术方法模拟条件分支和间接寻址来完成的。因此,至少在原则上,Zuse 的 Z3 与当今具有有限寻址空间的计算机一样通用。
简而言之,SOers,图灵完备性究竟需要哪种类型的分支?假设内存无限,只有一个goto
或jmp
分支结构(没有if
或jnz
结构)的语言可以被认为是图灵完备的吗?