一、概念
图灵完备(Turing Complete),图灵完备是指机器执行任何其他可编程计算机能够执行计算的能力。在可计算性理论里,如果一系列操作数据的规则(如指令集、编程语言、细胞自动机)按照一定的顺序可以计算出结果,被称为图灵完备。
一个有图灵完备指令集的设备被定义为通用计算机。如果是图灵完备的,它(计算机设备)有能力执行条件跳转(if、while、goto语句)以及改变内存数据。 如果某个东西展现出了图灵完备,它就有能力表现出可以模拟原始计算机,而即使最简单的计算机也能模拟出最复杂的计算机。
所有的通用编程语言和现代计算机的指令集都是图灵完备的(C++ template就是图灵完备的),都能解决内存有限的问题。图灵完备的机器都被定义有无限内存,但是机器指令集却通常定义为只工作在特定的、有限数量的RAM上。
二、图灵完备语言
图灵完备的语言,有循环执行语句,判断分支语句等。理论上能解决任何算法。但有可能进入死循环而程序崩溃。
图灵不完备也不是没有意义,有些场景我们需要限制语言本身。如限制循环和递归, 可以保证该语言能写的程序一定是终止的。
图灵完备和图灵不完备各有其优势,图灵不完备会更安全些,图灵完备会更智能些。
三、图灵完备与区块链的关系
区块链2.0中的智能合约包括其运行的虚拟机、编写语言都是图灵完备的,而区块链1.0如比特币的账本交易都是用脚本执行,其编写脚本语言不是图灵完备的。
四、参考资料
1、《什么是图灵完备?》
2、《图灵完备到底是个什么鬼?》