猫图灵机?4项测试证明,「猫猫计算机」可执行任意计算
软萌可爱的猫咪,总会唤起我们想要「撸猫」或者「吸猫」的冲动。
和猫咪待在一块,还真有种治愈的感觉。
而且,按照一位法国开发者Chloeacute, Lourseyre的说法,猫咪甚至可以当计算机用!
最近几天,在她的个人博客上讨论了一个很重要的话题:猫是不是「图灵完备」的它是「图灵机」吗
测试对象就是这只小猫Peluche
Peluche是一只毛茸茸的小猫,就住在Chloeacute, Lourseyre家里它就是今天的测试对象
什么是图灵完备。
图灵完备性的概念是,如果某台设备可以模拟图灵机,那么它就可以执行任何类型的计算。
也就是说,任何能够通过以下4项测试的机器都是一台计算机。这4项测试是:
. 和 , mdash,mdash, 输入和输出一个值 + 和 — mdash,mdash, 增加和减少当前存储单元中包含的值 gt, 和 lt, mdash,mdash, 向左或向右移动当前存储单元 mdash,mdash, 执行循环
所以,如果 Peluche 能够通过这4项测试,就可以认为它是「图灵完备」的。
图灵完备性的证明
输入输出
首先,为了验证能不能得到反馈,Chloeacute, Lourseyre用手戳了戳 Peluche。
它看了Chloeacute, Lourseyre一眼,然后才转过身。
所以是这样的:Chloeacute, Lourseyre戳了它一下,然后得到了一个反应结论很明确,Peluche可以处理输入,并给出输出
输入,输出已确认!
增减内存值
前几天,Chloeacute, Lourseyre下班回来,发现厨房变成了这样:
到处都是猫粮hellip,hellip,
但后来Chloeacute, Lourseyre仔细观察了一下,发现可以把撒上猫粮的地板按位置进行编号,就像下面这样:
在Chloeacute, Lourseyre看来,这看起来很像内存带!Peluche可以将猫粮洒在地砖上,然后直接在地砖上吃掉它们,因此,Peluche可以增加和减少给定存储单元中包含的值。
增减内存值,已确认!
左右移动当前内存单元
还有一次,Chloeacute, Lourseyre在洗碗时不小心把一些水洒在了 Peluche 身上它开始在厨房里到处乱跑,弄得一团糟
但是如果仔细观察,不难注意到,Peluche一边乱跑,一边把自己装食物的碗移动了位置。
移动内存单元,已确认!
执行循环
在厨房被Peluche搞的一团乱之后,很明显,Chloeacute, Lourseyre不得不清理打扫。
然后不到五分钟后,Chloeacute, Lourseyre回到厨房,又变成这样了:
所以,Peluche绝对可以执行循环......
循环已确认!
到这里为止,Chloeacute, Lourseyre已经证明了Peluche确实是「图灵完备」的那么下一个问题是,如何使用Peluche来执行高性能计算任务
如何执行。首先要有代码,Chloeacute, Lourseyre编了一段简单的代码,就像下面这样:
结果:Peluche什么都不做!
所以最后,Chloeacute, Lourseyre不禁想,虽然猫是「图灵完备」的,但可能不是为了执行代码而设计的。
关于「猫猫计算机」
上面的「猫猫计算机」当然都是说笑话根据Chloeacute, Lourseyre的经验,当有人发现一种语言的新特征时,就开始到处使用
「猫猫计算机」似乎是一个新手会犯的错误,但即使是最有经验的开发人员,有时也会犯新手错误,承认这一点没什么难为情的。
实际上,在面对编程语言的全新版本中的新功能时,积累经验的最好办法,就是把每个功能错误地使用一次,以避免今后的误用。
在使用某项功能之前,一定要先问问自己,这样做实际上是否有必要,否则你也可能犯下像「猫猫计算机」这样的错误。
另外,猫猫计算机很费猫,所以不要这样做。
。