透过技术的表象看本质

以往的文章里,我曾经介绍过如何通过字符串替换来实现逻辑运算。一个很简单的字符串替换模型(如搜索字符串,看见120就换成012,看见021就换成210,看见1221就换成0000),就能实现与、或、非、异或等逻辑运算。理论上说,用一个字符串替换系统可以设计出一台具有复杂功能的计算机来。这其中有个很微妙的问题,字符串匹配和替换的过程中的“匹配”,本质上也是逻辑判断过程,“当看见120就换成210”这个动作,难道不正是具有逻辑判断作用的一句指令吗?于是就陷入到一个怪圈之中:人们能够用字符串替换的方式,实现各种逻辑门,并且用这些逻辑门搭建出复杂的运算系统。不过人们为了能够做出一个能实现自动的字符串替换的系统,就需要先有一个能够做复杂运算的计算机,而这个计算机是用各种逻辑门搭建出来的。这就好像是说,鸡是由蛋孵出来的,而蛋是由鸡所生的,那么先有鸡,还是先有蛋呢?这个问题并没有固定统一的答案,本文希望通过一个拼图游戏为解答问题带来一些启示。

● 拼图游戏里的逻辑运算

下面是拼图游戏的制作过程。

1.剪裁若干纸片,使其具有如這样的形状,正方形的凸出和缺口,都代表数字0,这样形状的纸片要多做一些。

2.剪裁若干纸片,使其具有如这样的形状,正方形的凸出和缺口代表数字0,三角形的凸出和缺口代表1,弧形的凸出和缺口代表2。这张拼图的内在含义是,把021替换为210。

3.把刚才那张纸片翻个面,就变成了,内在含义是把120替换成012。类似的,也可以做出具有把1221替换成0000功能的拼图。

4.接下来就可以把这些纸片排列成一排,然后用这些纸片来摆出逻辑表达式。比如“00120000000012000021”,根据往期的文章,这串字符串的意思,其实是进行“1 and 1”的逻辑运算,摆成拼图就是这样的(如图1)。

如果是由下往上拼图,那么得到的图案只可能是这样的(如图2)。

参考论文

将上面一行拼图还原成数字符号,就是000120000000012000210,如果按前面所说的规则一直把这个拼图游戏玩下去,最后就能得到00000000000000000012,原始的字符串中有两个“12”用以代表布尔逻辑值“1”,反复替换后在字符串右侧得到一个“12”,也就是说结果为“1”,于是就实现了“1 and 1”的逻辑运算。

● 拼图游戏的意义

这个拼图游戏有着很重要的启发意义。假设有人要建造一台计算机,理论上他只需要做出大量类似于拼版可相互嵌入的积木块,然后把这些积木块放进一个大罐子里,并不需要某个聪明人去一块一块地摆放这些积木,只要将这个大罐子不停摇晃,若是摇晃的时间足够足够长,积木自动就会找到自己恰当的位置相互嵌合在一起。而各种逻辑表达式依靠这种随机的力量,自然而然就产生出来并开始自动运行了,这其实在某种程度上解答了前面提出的问题:人们并不需要为了实现某个逻辑运算,而去搭建一个“以实现这个逻辑运算”为目的的逻辑运算系统(否则就陷入了无法解套的怪圈),因为充满着随机特性的大自然天生就提供了可用于搭建逻辑运算系统的材料,如今计算机所大量使用的是硅晶材料,但若自然界中没有硅晶,也应该能找到其他替代的材料,如量子点、DNA之类的。

参考资料

http://zimeitichuangzuo.com/index.php?c=show&id=5400

(0)

相关推荐

  • Python有哪些运算符?用法介绍!

    众所周知,编程语言的本质就是解决运算逻辑,包括Python也是如此,它可以通过各种算法实现想要的功能;当然,我们也必须搞懂各类运算符的使用,那么Python有哪些运算符呢?它的使用方法是什么?我们来看 ...

  • 【青少年编程】【四级】数字反转

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 我们将有关编程题目的教学视频已经发布到抖 ...

  • 【青少年编程】【四级】加减法混合运算器

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 我们将有关编程题目的教学视频已经发布到抖 ...

  • 耐心玩“拼图” 才可能找到“金矿”

    耐心玩"拼图" 才可能找到"金矿" 很多时候赚钱的商机是个拼图游戏,很多有价值的或者会误导 的面包屑,散落在各处,需要你甄别,延伸思考,再谨慎地拼凑出 完整的模 ...

  • 【青少年编程】【四级】词语接龙

    词语接龙 小猫从"中国"开始岀题,以"国"字开头接下一个词语,如果输入的不是两字词语或者输入的词语不是以"国"开头,游戏结束. 01 02 ...

  • 纯创意分享,一款相当有想法的电子积木拼图 ActivePuzzle!

    偶然在facebook看到一则正在kickstarter众筹的电子积木拼图,感觉这里面的想法相当的吸引人! 先看看产品图: 基本原理就是把逻辑单元做在拼图造型的地板上,通过相互拼装实现不同的功能. 官 ...

  • VBA中不同类型的运算和运算符

    听过VBA代码吗?羡慕能用代码高效办公的人吧!VBA代码远没有大家想象的那么难,跟着小编学一起学吧! 要对Excel中不同的数据进行分析和计算,就可能需要用到运算符. 不同类型的数据,能执行的运算也不 ...

  • 【青少年编程】【三级】打气球游戏

    打气球游戏 1.准备工作 (1)角色"Wand","Balloon1": (2)默认白色背景. 2.功能实现 (1)程序开始,魔法棒在舞台的底部不停左右移动: ...

  • C 语言程序设计---指针

    我应该比大多数读者年龄都要大一些,所以我就自称"谱哥",做事靠谱,为人靠谱的意思:针对 C 语言三大核心:数组.指针.函数,今天继续写技术文章. 上次 C 语言写到了数组,有些书是 ...

  • 这个傻方法,却是我给娃数学思维启蒙的大招!

    瓜妈说: 之前在朋友圈分享了瓜瓜做计算题的照片,那时候瓜上中班,确实在同龄孩子里算不错,毕竟我也没教过他怎么计算,只教了一下+-=的符号,他就无师自通了! 看到瓜做题这么溜,朋友Zoe妈妈就着急了,& ...

  • 好数学,玩出来!大中小班数学区活动大全来啦

    数学区活动因其自主性.灵活性等特点而具有独特的教育价值.它与集体数学教育活动相互联系.相互补充,共同促进幼儿学习发展. 今天,我们将从集合与分类.计数.数符号.数运算.量的比较.图形.空间等7个方面简 ...