图灵完备到底是个啥?
阿牛哥 Lv4

当年以太坊出现的时候,自称其EVM实现了一个“图灵完备”的语言,可能很多人跟我一样,搞不清这里所谓的“图灵完备”到底是个啥。

其实程序员日常使用的那几种高级语言,比如Java、C++等等,都是“图灵完备”的,几乎所有的高级语言都是图灵完备的,所以大部分程序员,如果不去专门了解,是不会知道这个概念的。

而自从以太坊开始,很多区块链都给自己的虚拟机是图灵完备的,更像是一个吹嘘的噱头,它们和普通的Java等语言差别不大。所以看到这里,如果不想深入了解的话,下文就可以忽略了。

图灵完备是指一种计算机语言或者一台计算机,它能完成图灵机的所有操作和功能,那么这个语言或者机器就是图灵完备的。

我们日常使用的计算机PC、手机之类,以及各种高级语言都可以实现图灵机,所以它们都是图灵完备的。而正则表达式因为能力有限所以不是图灵完备的,比特币可编程的部分就是它在交易时的堆栈,通过有限的脚本操作,也不是图灵完备的。

既然能做出图灵机的语言就是图灵完备的,那么“图灵机”又是个啥呢?

图灵机是英国数学家图灵设计的一台抽象的机器,它包含三个部分:一条无限长的纸带,纸带上是一个一个的格子,格子上有数据;一台机器,机器内包含了状态和程序;一个读写头,读写头一端用于读写纸带内容,一端连接在机器上,受机器控制。机器根据当前纸带的输入以及自身内部状态决定下一步读写头如何移动和操作。

这个机器是不是很想我们日常使用的CPU,哈佛结构的CPU,程序控制对输入输出数据进行操作。所以CPU加上程序和输入输出便是一台物理的图灵机。

从功能上讲,就是区块链中图灵完备的语言能做一般语言所完成的逻辑。所以EVM的功能才会比比特币强大,原因是能通过solidity实现智能合约。但是内建这样的语言也有其弊端,即智能合约的安全性,因为语言实现的逻辑过于复杂而导致审计困难,一旦智能合约有bug或者漏洞,会带来风险的。

所以,图灵完备就是这么回事,可能因为本身是个比较生僻的概念,所以才被币圈反复提及,如此而已。