图灵完备是指一台机器,只要有足够的时间和内存以及必要的指令,就可以解决任何计算问题,无论多么复杂。该术语通常用于描述现代编程语言,因为它们大多数都是图灵完备的(C++、Python、JavaScript 等)。
在现代计算机出现之前,艾伦图灵假设有一天会出现一台可以解决任何问题的机器。这台机器后来被称为图灵机。
艾伦把他的机器想象成一长条磁带,上面以二进制代码(1 和 0)的形式写有信息。该机器还将有一个读/写头,它沿着磁带移动,一个接一个地读取每个方块。代码会向机器询问一个计算问题,而磁带的长度将达到解决方案所需的长度。
当磁头沿着磁带移动时,机器会遵循简单的指令控制它如何反应。它读取磁带,按照说明进行操作,并在移动时执行特定操作以写入新代码。这种新的代码模式就是问题的答案。图灵的假设机器可以回答任何可以用代码表达的计算问题(并且有一个可计算的答案)。
当设备或编程语言可以通过运行任何程序或解决图灵机可以运行或解决的任何问题来复制图灵机时,就被认为是图灵完备的。另一方面,如果设备或编程语言无法做到这一点,则称其为图灵不完备。
简单的计算器是系统的一个示例,图灵不完备,因为它只能进行几种类型的计算。相比之下,可编程科学计算器(能够执行各种计算)可以被视为图灵机。
虽然区块链技术的某些应用是图灵完备的,但其他应用却是图灵不完备的。这根据所实现的脚本技术而变化。例如,比特币中使用的脚本语言被故意设计为图灵不完整,因为它达到了其目的,并且增加的复杂性可能会带来问题。通过保持简单,开发人员可以高精度预测它在有限数量的使用情况下将如何反应。
另一方面,以太坊是作为图灵完备的区块链构建的。这很重要,因为它需要了解构成智能合约的协议。通过图灵完备,以太坊有能力理解和实施任何未来的协议,甚至是那些尚未想到的协议。换句话说,以太坊的图灵完备性意味着它能够使用其代码库执行几乎任何任务,只要它有正确的指令、足够的时间和处理能力。