是C++;图灵完备语言? 是C++的图灵完整语言?< /P>

是C++;图灵完备语言? 是C++的图灵完整语言?< /P>,c++,turing-machines,C++,Turing Machines,显然是这样,但如何实际证明呢 是否有一个可重复性最低的例子表明了这种情况?是的,来自维基百科 为了证明某些东西是图灵完备的,这就足够证明了 它可以用来模拟一些图灵完备系统。例如 如果命令式语言具有条件,则它是图灵完备的 分支(例如,“if”和“goto”语句,或“零分支” 指令;参见一个指令集(计算机)和 更改任意数量的内存(例如,维护 任意数量的数据项) 然后列出了C++。< P>我不是计算理论的专家,但是作为经验法则,如果语言支持条件分支,则声明语言是图灵完成的,即它必须支持if语句并进入指

显然是这样,但如何实际证明呢


是否有一个可重复性最低的例子表明了这种情况?

是的,来自维基百科

为了证明某些东西是图灵完备的,这就足够证明了 它可以用来模拟一些图灵完备系统。例如 如果命令式语言具有条件,则它是图灵完备的 分支(例如,“if”和“goto”语句,或“零分支” 指令;参见一个指令集(计算机)和 更改任意数量的内存(例如,维护 任意数量的数据项)


然后列出了C++。

< P>我不是计算理论的专家,但是作为经验法则,如果语言支持条件分支,则声明语言是图灵完成的,即它必须支持if语句并进入指令。因此,大多数语言正在走向完整


<参考文献> /P>为了这样做,你需要证明,C++至少和图灵机一样强大。一种方法是在C++中编写一个图灵机器,程序模仿一个图灵机器。“如果忽略了有限内存的限制,几乎所有的编程语言都是图灵完成的”。一些非编程语言是都灵完成的。例如,心智细胞在完成时并不是一个很高的标准。向下推自动机添加第二个堆栈,并完成其图灵图。将两个计数器添加到NFA,它就是图灵完成的。我不确定人们是否知道这意味着什么。创建一个图灵完整的语言几乎是微不足道的。@博洛夫:我假定“都灵完成”是一个错字,因为都灵完整的编程语言是神秘的。应该注意到,从技术上讲,C++语言是图灵完成的,而任何特定的实现(如<代码> G++<代码>机器X”)。不是。@bitmask你是说它可以通过给它无限的内存来完成图灵吗?C++需要指针具有有限的大小,所以它可能是不可能的。@ HyyBiLCAT不是无限的,而是任意大的。所以,虽然,是的,你不能拥有无限的内存,但你至少可以拥有任意数量的内存。因此,可以设想用2^k位指针宽度实例化程序X,直到内存耗尽,然后用2^(k+1)位从头开始,依此类推。考虑到任何最终停止的程序在运行时只使用有限的内存,您不需要无限内存,只需要能够无限期地提供更多内存。相比之下,“X上的g++”有固定的内存量。。。。然而,C++标准确实会讨论实现,因此抽象语言不能与实际实现完全分离。哦,好吧,如果我们使用斜视C++的高度形式化的方法,看起来肯定是图灵完成的):这是错误的:<代码> Goto s不是条件分支(条件GOTOS存在于某些语言中,但不是典型的情况)支持
if
语句作为其唯一控制流语句的语言不是图灵完整的,因为它不能模拟简单的
while(true){}
程序。有
if
goto
就足够了。基本上,您需要某种方法来重复前面的语句,并根据输入决定行为。事实上,只要
while
就足够了,因为
while
可以很容易地模拟
if