软萌的猫咪总会勾起我们“吸猫”或“吸猫”的冲动。和猫在一起真的是一种治愈的感觉。而且,根据法国开发人员ChloéLourseyre的说法,猫甚至可以用作计算机!最近,她的个人博客上讨论了一个很重要的话题:猫是“图灵完备”的吗?是“图灵机”吗?测试对象是这只小猫PeluchePeluche是一只毛茸茸的小猫,住在ChloéLourseyre的家里。就是今天的测试对象。什么是图灵完备性?图灵完备性是指如果一个设备可以模拟图灵机,那么它就可以执行任何类型的计算。也就是说,任何可以通过以下4项测试的机器都是计算机(因此可以执行任何类型的计算)。4个测试是:.和,-输入和输出一个值。+和--递增和递减当前内存位置中包含的值。(图灵机有一个“记忆带”,上面有“记忆位置”。机器总是指向一个记忆位置,也就是上面提到的“当前”记忆位置。)>和<-向左或向右移动当前记忆存储单元。[和]-执行循环。因此,Peluche如果能通过这4个测试,就可以算是“图灵完备”了。图灵完备性的证明输入输出首先,为了验证能否得到反馈,ChloéLourseyre用手戳了戳Peluche。它看了ChloéLourseyre一眼,然后转身。所以事情是这样的:ChloéLourseyre戳了戳它,得到了反应。结论很明确,Peluche可以处理输入并给出输出。输入输出已确认!增减记忆值的前几天,ChloéLourseyre下班回来,发现厨房变成了这个样子:到处都是猫粮……但ChloéLourseyre仔细一看,发现地上撒满了猫粮可以根据位置编号,像这样:对ChloéLourseyre来说,这看起来很像记忆棒!Peluche可以将猫粮洒在地砖上,然后直接在地砖上吃,因此,Peluche可以增加和减少给定存储单元中包含的价值。增减记忆值,确定!左右移动当前记忆单元还有一次,ChloéLourseyre在洗碗时不小心将一些水洒在了Peluche身上。它开始在厨房里跑来跑去弄得一团糟。但是如果你仔细观察(红色箭头的尖端),不难发现佩鲁切在跑来跑去的时候移动了他的食盆。也就是说,Peluche将食物洒到另一块瓷砖上。这相当于将指针移动到当前内存,编辑另一个内存位置。移动存储单元,确认!执行循环在Peluche把厨房弄得一团糟之后,很明显ChloéLourseyre必须清理干净。然后不到五分钟,ChloéLourseyre回到了厨房,又是这样:所以,Peluche绝对可以执行循环……循环确认!至此,ChloéLourseyre已经证明了Peluche确实是“图灵完备”。那么接下来的问题是,如何使用Peluche来执行高性能计算任务呢?怎么做?首先是代码,ChloéLourseyre编译了一段简单的代码,如下所示:(此代码示例是一种名为“braincat”的奇特新语言)结果:Peluche什么都不做!所以最后,ChloéLourseyre不禁怀疑,虽然猫是“图灵完备的”,但也许它们并不是被设计来执行代码的?“猫猫电脑”上的“猫猫电脑”当然是个笑话。根据ChloéLourseyre的经验,当有人发现一种语言的新特性时,就会开始到处使用它。“MaoMaoComputer”看起来像是菜鸟犯的错误,但即使是最有经验的开发人员有时也会犯菜鸟错误,承认这一点并不丢人。事实上,在全新版本的编程语言中获得新功能体验的最佳方法是错误地使用每个功能一次,以避免将来误用。在使用一个功能之前,一定要问问自己是否真的有必要这样做,否则你也可能会犯“猫猫电脑”这样的错误。还有,猫猫很贵,不要做。(在撰写本文时,没有猫受到伤害,但有一只猫被轻轻戳了几下。)
