陳凱
以往的文章里,我曾經(jīng)介紹過如何通過字符串替換來實(shí)現(xiàn)邏輯運(yùn)算。一個(gè)很簡單的字符串替換模型(如搜索字符串,看見120就換成012,看見021就換成210,看見1221就換成0000),就能實(shí)現(xiàn)與、或、非、異或等邏輯運(yùn)算。理論上說,用一個(gè)字符串替換系統(tǒng)可以設(shè)計(jì)出一臺具有復(fù)雜功能的計(jì)算機(jī)來。這其中有個(gè)很微妙的問題,字符串匹配和替換的過程中的“匹配”,本質(zhì)上也是邏輯判斷過程,“當(dāng)看見120就換成210”這個(gè)動作,難道不正是具有邏輯判斷作用的一句指令嗎?于是就陷入到一個(gè)怪圈之中:人們能夠用字符串替換的方式,實(shí)現(xiàn)各種邏輯門,并且用這些邏輯門搭建出復(fù)雜的運(yùn)算系統(tǒng)。不過人們?yōu)榱四軌蜃龀鲆粋€(gè)能實(shí)現(xiàn)自動的字符串替換的系統(tǒng),就需要先有一個(gè)能夠做復(fù)雜運(yùn)算的計(jì)算機(jī),而這個(gè)計(jì)算機(jī)是用各種邏輯門搭建出來的。這就好像是說,雞是由蛋孵出來的,而蛋是由雞所生的,那么先有雞,還是先有蛋呢?這個(gè)問題并沒有固定統(tǒng)一的答案,本文希望通過一個(gè)拼圖游戲?yàn)榻獯饐栴}帶來一些啟示。
● 拼圖游戲里的邏輯運(yùn)算
下面是拼圖游戲的制作過程。
1.剪裁若干紙片,使其具有如這樣的形狀,正方形的凸出和缺口,都代表數(shù)字0,這樣形狀的紙片要多做一些。
2.剪裁若干紙片,使其具有如這樣的形狀,正方形的凸出和缺口代表數(shù)字0,三角形的凸出和缺口代表1,弧形的凸出和缺口代表2。這張拼圖的內(nèi)在含義是,把021替換為210。
3.把剛才那張紙片翻個(gè)面,就變成了,內(nèi)在含義是把120替換成012。類似的,也可以做出具有把1221替換成0000功能的拼圖。
4.接下來就可以把這些紙片排列成一排,然后用這些紙片來擺出邏輯表達(dá)式。比如“00120000000012000021”,根據(jù)往期的文章,這串字符串的意思,其實(shí)是進(jìn)行“1 and 1”的邏輯運(yùn)算,擺成拼圖就是這樣的(如圖1)。
如果是由下往上拼圖,那么得到的圖案只可能是這樣的(如圖2)。
將上面一行拼圖還原成數(shù)字符號,就是000120000000012000210,如果按前面所說的規(guī)則一直把這個(gè)拼圖游戲玩下去,最后就能得到00000000000000000012,原始的字符串中有兩個(gè)“12”用以代表布爾邏輯值“1”,反復(fù)替換后在字符串右側(cè)得到一個(gè)“12”,也就是說結(jié)果為“1”,于是就實(shí)現(xiàn)了“1 and 1”的邏輯運(yùn)算。
● 拼圖游戲的意義
這個(gè)拼圖游戲有著很重要的啟發(fā)意義。假設(shè)有人要建造一臺計(jì)算機(jī),理論上他只需要做出大量類似于拼版可相互嵌入的積木塊,然后把這些積木塊放進(jìn)一個(gè)大罐子里,并不需要某個(gè)聰明人去一塊一塊地?cái)[放這些積木,只要將這個(gè)大罐子不停搖晃,若是搖晃的時(shí)間足夠足夠長,積木自動就會找到自己恰當(dāng)?shù)奈恢孟嗷デ逗显谝黄稹6鞣N邏輯表達(dá)式依靠這種隨機(jī)的力量,自然而然就產(chǎn)生出來并開始自動運(yùn)行了,這其實(shí)在某種程度上解答了前面提出的問題:人們并不需要為了實(shí)現(xiàn)某個(gè)邏輯運(yùn)算,而去搭建一個(gè)“以實(shí)現(xiàn)這個(gè)邏輯運(yùn)算”為目的的邏輯運(yùn)算系統(tǒng)(否則就陷入了無法解套的怪圈),因?yàn)槌錆M著隨機(jī)特性的大自然天生就提供了可用于搭建邏輯運(yùn)算系統(tǒng)的材料,如今計(jì)算機(jī)所大量使用的是硅晶材料,但若自然界中沒有硅晶,也應(yīng)該能找到其他替代的材料,如量子點(diǎn)、DNA之類的。endprint
以往的文章里,我曾經(jīng)介紹過如何通過字符串替換來實(shí)現(xiàn)邏輯運(yùn)算。一個(gè)很簡單的字符串替換模型(如搜索字符串,看見120就換成012,看見021就換成210,看見1221就換成0000),就能實(shí)現(xiàn)與、或、非、異或等邏輯運(yùn)算。理論上說,用一個(gè)字符串替換系統(tǒng)可以設(shè)計(jì)出一臺具有復(fù)雜功能的計(jì)算機(jī)來。這其中有個(gè)很微妙的問題,字符串匹配和替換的過程中的“匹配”,本質(zhì)上也是邏輯判斷過程,“當(dāng)看見120就換成210”這個(gè)動作,難道不正是具有邏輯判斷作用的一句指令嗎?于是就陷入到一個(gè)怪圈之中:人們能夠用字符串替換的方式,實(shí)現(xiàn)各種邏輯門,并且用這些邏輯門搭建出復(fù)雜的運(yùn)算系統(tǒng)。不過人們?yōu)榱四軌蜃龀鲆粋€(gè)能實(shí)現(xiàn)自動的字符串替換的系統(tǒng),就需要先有一個(gè)能夠做復(fù)雜運(yùn)算的計(jì)算機(jī),而這個(gè)計(jì)算機(jī)是用各種邏輯門搭建出來的。這就好像是說,雞是由蛋孵出來的,而蛋是由雞所生的,那么先有雞,還是先有蛋呢?這個(gè)問題并沒有固定統(tǒng)一的答案,本文希望通過一個(gè)拼圖游戲?yàn)榻獯饐栴}帶來一些啟示。
● 拼圖游戲里的邏輯運(yùn)算
下面是拼圖游戲的制作過程。
1.剪裁若干紙片,使其具有如這樣的形狀,正方形的凸出和缺口,都代表數(shù)字0,這樣形狀的紙片要多做一些。
2.剪裁若干紙片,使其具有如這樣的形狀,正方形的凸出和缺口代表數(shù)字0,三角形的凸出和缺口代表1,弧形的凸出和缺口代表2。這張拼圖的內(nèi)在含義是,把021替換為210。
3.把剛才那張紙片翻個(gè)面,就變成了,內(nèi)在含義是把120替換成012。類似的,也可以做出具有把1221替換成0000功能的拼圖。
4.接下來就可以把這些紙片排列成一排,然后用這些紙片來擺出邏輯表達(dá)式。比如“00120000000012000021”,根據(jù)往期的文章,這串字符串的意思,其實(shí)是進(jìn)行“1 and 1”的邏輯運(yùn)算,擺成拼圖就是這樣的(如圖1)。
如果是由下往上拼圖,那么得到的圖案只可能是這樣的(如圖2)。
將上面一行拼圖還原成數(shù)字符號,就是000120000000012000210,如果按前面所說的規(guī)則一直把這個(gè)拼圖游戲玩下去,最后就能得到00000000000000000012,原始的字符串中有兩個(gè)“12”用以代表布爾邏輯值“1”,反復(fù)替換后在字符串右側(cè)得到一個(gè)“12”,也就是說結(jié)果為“1”,于是就實(shí)現(xiàn)了“1 and 1”的邏輯運(yùn)算。
● 拼圖游戲的意義
這個(gè)拼圖游戲有著很重要的啟發(fā)意義。假設(shè)有人要建造一臺計(jì)算機(jī),理論上他只需要做出大量類似于拼版可相互嵌入的積木塊,然后把這些積木塊放進(jìn)一個(gè)大罐子里,并不需要某個(gè)聰明人去一塊一塊地?cái)[放這些積木,只要將這個(gè)大罐子不停搖晃,若是搖晃的時(shí)間足夠足夠長,積木自動就會找到自己恰當(dāng)?shù)奈恢孟嗷デ逗显谝黄?。而各種邏輯表達(dá)式依靠這種隨機(jī)的力量,自然而然就產(chǎn)生出來并開始自動運(yùn)行了,這其實(shí)在某種程度上解答了前面提出的問題:人們并不需要為了實(shí)現(xiàn)某個(gè)邏輯運(yùn)算,而去搭建一個(gè)“以實(shí)現(xiàn)這個(gè)邏輯運(yùn)算”為目的的邏輯運(yùn)算系統(tǒng)(否則就陷入了無法解套的怪圈),因?yàn)槌錆M著隨機(jī)特性的大自然天生就提供了可用于搭建邏輯運(yùn)算系統(tǒng)的材料,如今計(jì)算機(jī)所大量使用的是硅晶材料,但若自然界中沒有硅晶,也應(yīng)該能找到其他替代的材料,如量子點(diǎn)、DNA之類的。endprint
以往的文章里,我曾經(jīng)介紹過如何通過字符串替換來實(shí)現(xiàn)邏輯運(yùn)算。一個(gè)很簡單的字符串替換模型(如搜索字符串,看見120就換成012,看見021就換成210,看見1221就換成0000),就能實(shí)現(xiàn)與、或、非、異或等邏輯運(yùn)算。理論上說,用一個(gè)字符串替換系統(tǒng)可以設(shè)計(jì)出一臺具有復(fù)雜功能的計(jì)算機(jī)來。這其中有個(gè)很微妙的問題,字符串匹配和替換的過程中的“匹配”,本質(zhì)上也是邏輯判斷過程,“當(dāng)看見120就換成210”這個(gè)動作,難道不正是具有邏輯判斷作用的一句指令嗎?于是就陷入到一個(gè)怪圈之中:人們能夠用字符串替換的方式,實(shí)現(xiàn)各種邏輯門,并且用這些邏輯門搭建出復(fù)雜的運(yùn)算系統(tǒng)。不過人們?yōu)榱四軌蜃龀鲆粋€(gè)能實(shí)現(xiàn)自動的字符串替換的系統(tǒng),就需要先有一個(gè)能夠做復(fù)雜運(yùn)算的計(jì)算機(jī),而這個(gè)計(jì)算機(jī)是用各種邏輯門搭建出來的。這就好像是說,雞是由蛋孵出來的,而蛋是由雞所生的,那么先有雞,還是先有蛋呢?這個(gè)問題并沒有固定統(tǒng)一的答案,本文希望通過一個(gè)拼圖游戲?yàn)榻獯饐栴}帶來一些啟示。
● 拼圖游戲里的邏輯運(yùn)算
下面是拼圖游戲的制作過程。
1.剪裁若干紙片,使其具有如這樣的形狀,正方形的凸出和缺口,都代表數(shù)字0,這樣形狀的紙片要多做一些。
2.剪裁若干紙片,使其具有如這樣的形狀,正方形的凸出和缺口代表數(shù)字0,三角形的凸出和缺口代表1,弧形的凸出和缺口代表2。這張拼圖的內(nèi)在含義是,把021替換為210。
3.把剛才那張紙片翻個(gè)面,就變成了,內(nèi)在含義是把120替換成012。類似的,也可以做出具有把1221替換成0000功能的拼圖。
4.接下來就可以把這些紙片排列成一排,然后用這些紙片來擺出邏輯表達(dá)式。比如“00120000000012000021”,根據(jù)往期的文章,這串字符串的意思,其實(shí)是進(jìn)行“1 and 1”的邏輯運(yùn)算,擺成拼圖就是這樣的(如圖1)。
如果是由下往上拼圖,那么得到的圖案只可能是這樣的(如圖2)。
將上面一行拼圖還原成數(shù)字符號,就是000120000000012000210,如果按前面所說的規(guī)則一直把這個(gè)拼圖游戲玩下去,最后就能得到00000000000000000012,原始的字符串中有兩個(gè)“12”用以代表布爾邏輯值“1”,反復(fù)替換后在字符串右側(cè)得到一個(gè)“12”,也就是說結(jié)果為“1”,于是就實(shí)現(xiàn)了“1 and 1”的邏輯運(yùn)算。
● 拼圖游戲的意義
這個(gè)拼圖游戲有著很重要的啟發(fā)意義。假設(shè)有人要建造一臺計(jì)算機(jī),理論上他只需要做出大量類似于拼版可相互嵌入的積木塊,然后把這些積木塊放進(jìn)一個(gè)大罐子里,并不需要某個(gè)聰明人去一塊一塊地?cái)[放這些積木,只要將這個(gè)大罐子不停搖晃,若是搖晃的時(shí)間足夠足夠長,積木自動就會找到自己恰當(dāng)?shù)奈恢孟嗷デ逗显谝黄?。而各種邏輯表達(dá)式依靠這種隨機(jī)的力量,自然而然就產(chǎn)生出來并開始自動運(yùn)行了,這其實(shí)在某種程度上解答了前面提出的問題:人們并不需要為了實(shí)現(xiàn)某個(gè)邏輯運(yùn)算,而去搭建一個(gè)“以實(shí)現(xiàn)這個(gè)邏輯運(yùn)算”為目的的邏輯運(yùn)算系統(tǒng)(否則就陷入了無法解套的怪圈),因?yàn)槌錆M著隨機(jī)特性的大自然天生就提供了可用于搭建邏輯運(yùn)算系統(tǒng)的材料,如今計(jì)算機(jī)所大量使用的是硅晶材料,但若自然界中沒有硅晶,也應(yīng)該能找到其他替代的材料,如量子點(diǎn)、DNA之類的。endprint