陳凱 上海市位育中學(xué)
0這個(gè)數(shù)字可能有很多含義,有時(shí)候用來代表沒有,有時(shí)候用來代表正數(shù)和負(fù)數(shù)交界的那個(gè)特殊的數(shù)字,在很多程序語(yǔ)言中,0這個(gè)數(shù)字代表布爾值的“假”,但有時(shí)候也用來代表函數(shù)運(yùn)行成功。人們可以在頭腦中輕松地進(jìn)行0*x這樣的數(shù)學(xué)運(yùn)算,或者0andx這樣的邏輯運(yùn)算,當(dāng)然,用計(jì)算機(jī)也可以輕松地做到這些,但這種輕松掩蓋了事情背后的實(shí)際情況。若將當(dāng)前的計(jì)算機(jī)拆解至晶體管那樣細(xì)小的程度,盡管復(fù)雜,還是能夠觀察到機(jī)器是如何將某種低電壓作為0、高電壓作為1(或者其他對(duì)應(yīng)方式)從而控制開關(guān)電路實(shí)現(xiàn)信號(hào)的傳遞和計(jì)算的——相對(duì)而言,倒是人頭腦內(nèi)部的工作情況更難以直觀地顯現(xiàn)出來。周以真說,“計(jì)算思維是人的思維方式而不是計(jì)算機(jī)的思維方式”,“計(jì)算思維是思想,不是人造物。不只是我們生產(chǎn)的軟件硬件等人造物將以物理形式到處呈現(xiàn)并時(shí)時(shí)刻刻觸及我們的生活,更重要的是還將有我們用以接近和求解問題、管理日常生活、與他人交流和互動(dòng)的計(jì)算概念”[1],對(duì)這些話的理解也許會(huì)產(chǎn)生分歧,但筆者從中得到一個(gè)重要的啟發(fā),就是在求解問題的過程中,可以先將以物理形式的時(shí)時(shí)刻刻觸及我們的軟硬件人造物——這個(gè)人造物基本上就是人們?nèi)粘J褂玫挠?jì)算機(jī)——先行排除出去,而將目光放置在計(jì)算得以實(shí)現(xiàn)的概念上。在周以真的原文中,“計(jì)算概念”一詞是“computational concepts”,指的是與計(jì)算機(jī)有關(guān)的諸多概念,這提示了求解問題過程中概念先行的重要性。本文圍繞二進(jìn)制編碼的數(shù)據(jù)與數(shù)據(jù)的表征方式,從概念出發(fā)對(duì)求解問題的計(jì)算裝置進(jìn)行設(shè)計(jì)和創(chuàng)造,討論將這樣的過程用于信息技術(shù)教學(xué)的可能性。
這里給出一個(gè)稍微有點(diǎn)奇怪的例子,有一種甲殼動(dòng)物名為鼠婦,除了平時(shí)喜歡生活在陰暗潮濕的地方,它還有一種有趣的習(xí)性叫做交替轉(zhuǎn)向行為,如當(dāng)它行走時(shí)遇見障礙,就向右轉(zhuǎn)彎,又遇到障礙,就向左轉(zhuǎn)彎,再遇到障礙,就向右轉(zhuǎn)彎… …如此左右交替。
這種基于條件的行為的變化提示了將其用于計(jì)算的可能性,與計(jì)算機(jī)有關(guān)的二進(jìn)制編碼數(shù)據(jù)與表征的概念,恰好對(duì)應(yīng)了鼠婦行走過程中要么這樣、要么那樣的二分選擇行為。例如,可以將鼠婦向左轉(zhuǎn)表示數(shù)據(jù)0,向右轉(zhuǎn)表示數(shù)據(jù)1;或者,將沒有障礙表示數(shù)據(jù)0,有障礙表示數(shù)據(jù)1;或者,將鼠婦無法到達(dá)目的地作為0,能夠到達(dá)目的地作為1。以二進(jìn)制解碼器為例,假設(shè)輸入兩位二進(jìn)制數(shù),則需要輸出相對(duì)應(yīng)的0、1、2、3這4個(gè)十進(jìn)制數(shù)字,在設(shè)計(jì)裝置之前,就需要思考如何實(shí)現(xiàn)對(duì)數(shù)據(jù)的表征。輸入部分相對(duì)容易處理,因?yàn)閿?shù)據(jù)可以和鼠婦行為的兩種狀態(tài)進(jìn)行直接對(duì)應(yīng);輸出部分則比較困難,因?yàn)樾枰业綄?duì)應(yīng)兩位二進(jìn)制數(shù)的4個(gè)數(shù)字的4種狀態(tài)。
圖1展示了一種設(shè)計(jì)方案:用積木擋板建造一個(gè)“迷宮”,將鼠婦放置其中,在迷宮中,標(biāo)為B的擋板表示二進(jìn)制數(shù)的第一位(低位),標(biāo)為A的擋板表示二進(jìn)制數(shù)的第二位(高位),擋板撤走代表數(shù)字0,擋板放下代表數(shù)字1,這樣,鼠婦最終行走的方向就可以用來指示兩位二進(jìn)制數(shù)所代表的4個(gè)不同的數(shù)字。由于鼠婦在不同環(huán)境中的行走路徑不同,可以在“迷宮”周圍放置若干個(gè)“蘋果”標(biāo)記,通過觀察鼠婦觸碰到哪個(gè)蘋果來獲知計(jì)算的結(jié)果,如圖2所示。在現(xiàn)實(shí)中,生物的這種強(qiáng)迫性的交替轉(zhuǎn)向行為因各種因素的影響,是存在一定出錯(cuò)概率的[2],這里假設(shè)鼠婦會(huì)以一種理想的狀態(tài)嚴(yán)格遵守交替轉(zhuǎn)向的行為規(guī)則。為了讓鼠婦的行動(dòng)更直觀地顯現(xiàn)出來,可以編寫一個(gè)簡(jiǎn)單的程序來進(jìn)行模擬。
圖1 初始狀態(tài)下的擋板和鼠婦
圖2 對(duì)應(yīng)兩位二進(jìn)制數(shù)4種情況的鼠婦行走路徑
上面的例子是用兩塊擋板的有和無代表兩個(gè)二進(jìn)制數(shù)1或0,來實(shí)現(xiàn)二進(jìn)制解碼運(yùn)算。其實(shí),也很容易借助類似的方法來實(shí)現(xiàn)邏輯運(yùn)算。與邏輯運(yùn)算和或邏輯運(yùn)算裝置的設(shè)計(jì)
都非常容易實(shí)現(xiàn),這里就不占用篇幅介紹了。相對(duì)難一些的是異或邏輯運(yùn)算,其裝置構(gòu)造仿佛一種智力游戲,圖3給出一種可行的設(shè)計(jì):當(dāng)擋板A或擋板B其中之一被撤除后,鼠婦就能走到蘋果的位置,表示結(jié)果為1;當(dāng)兩塊擋板都保留或都被撤除后,鼠婦就無法走到蘋果的位置,表示結(jié)果為0,這樣,鼠婦在走迷宮的過程中就實(shí)現(xiàn)了異或運(yùn)算。接下來還可以進(jìn)一步加以擴(kuò)展,將異或運(yùn)算和與運(yùn)算結(jié)合起來,實(shí)現(xiàn)一個(gè)二進(jìn)制加法裝置,如圖4所示。
圖3 一種異或邏輯運(yùn)算的設(shè)計(jì)
圖4 一種加法運(yùn)算裝置的設(shè)計(jì)
仔細(xì)分析二進(jìn)制編碼數(shù)據(jù)與表征,就可以發(fā)現(xiàn)存在多種不同的情況:可以用二進(jìn)制數(shù)據(jù)表征某個(gè)十進(jìn)制的數(shù)據(jù),如二進(jìn)制數(shù)101表示存在5塊積木擋板;或者用二進(jìn)制編碼的數(shù)據(jù)來表征特定的事物狀態(tài),如某個(gè)位置有積木擋板,可以用數(shù)字1表示,某個(gè)位置沒有積木擋板,可以用數(shù)字0表示。本文給出的例子恰恰是反過來的,在計(jì)算的輸入過程中,用有積木擋板來代表1,沒有積木擋板來表示0。
可以發(fā)現(xiàn),輸出部分的表征方式更為復(fù)雜,首先,以鼠婦遇到蘋果來表示1,沒有遇到表示0,4個(gè)蘋果接觸與否分別對(duì)應(yīng)了4個(gè)一位的二進(jìn)制數(shù),在計(jì)算結(jié)束時(shí),只有某一個(gè)特定的蘋果被鼠婦接觸,所以這4個(gè)二進(jìn)制數(shù)只可能有一個(gè)數(shù)是1,從而表示其代表的十進(jìn)制數(shù)是0、1、2、3中的某一個(gè)。這就是二進(jìn)制獨(dú)熱碼的一種應(yīng)用,下頁(yè)表中列出了解碼過程中這兩層不同的表征。
?
這個(gè)計(jì)算裝置的使用者不需要知道鼠婦行走的細(xì)節(jié),只要知道輸入部分狀態(tài)和輸出部分狀態(tài)的含義,就可以利用它進(jìn)行計(jì)算了。對(duì)設(shè)計(jì)者來說,所做的事情不只是提取事物共同屬性的抽象化,還需要為某種抽象過程能夠被自動(dòng)執(zhí)行而進(jìn)行構(gòu)造。被構(gòu)造出來的裝置所做的事就是computing,對(duì)應(yīng)“自動(dòng)計(jì)算”,本文提到的“計(jì)算”都是指“自動(dòng)計(jì)算”(為避免用詞混淆,筆者認(rèn)為創(chuàng)造相應(yīng)的新詞或許是有必要的,如可以將“自動(dòng)計(jì)算”稱為“器算”,或可以借用舊詞“機(jī)算”)。
大衛(wèi)·查默斯(D a v i d Chalmers)指出信息具有物理形式,他詳細(xì)說明了結(jié)構(gòu)化信息和符號(hào)信息對(duì)于二進(jìn)制編碼的數(shù)據(jù)表征事實(shí)的過程,舉例說,“110111”中存儲(chǔ)器(其物理形式是穿孔卡片上特定位置的孔)的某個(gè)特定的部分,才代表某人年齡是55歲。[3]在這里,存儲(chǔ)器中數(shù)據(jù)的位置是一種結(jié)構(gòu)化信息,闡述哪個(gè)位置對(duì)應(yīng)年齡是一種符號(hào)信息,然后才能使二進(jìn)制序列串表征55歲的事實(shí)。在本文的例子中,獨(dú)熱碼是一種結(jié)構(gòu)化信息,其具體的物理形式是鼠婦是否觸碰蘋果。而對(duì)于這種結(jié)構(gòu)的解讀,也就是獨(dú)熱碼中1的位置怎樣對(duì)應(yīng)十進(jìn)制數(shù),則是一種符號(hào)信息。為了構(gòu)造某種自動(dòng)的計(jì)算裝置,設(shè)計(jì)者需要關(guān)注結(jié)構(gòu)化信息的物理形式以及對(duì)結(jié)構(gòu)的解讀方式。
到目前為止,這個(gè)鼠婦計(jì)算裝置是不完備的,因?yàn)橐粋€(gè)完整的計(jì)算實(shí)現(xiàn)(computing implementation)需要具備可級(jí)聯(lián)性、扇出性、布爾完備性這樣幾個(gè)特征[4],這里重點(diǎn)圍繞可級(jí)聯(lián)性開展討論,如當(dāng)前的這個(gè)裝置在輸出部分,采用鼠婦是否遇到蘋果的方式來表示0,這樣做存在一個(gè)缺陷——無法將計(jì)算結(jié)果為0和計(jì)算未完成這兩種情況區(qū)分開來,于是就無法正確地將計(jì)算結(jié)果傳遞給下一個(gè)系統(tǒng)。另一個(gè)問題是,用以表征輸入數(shù)據(jù)的事物狀態(tài)變化形式(有無擋板)和用以表征輸出數(shù)據(jù)的事物狀態(tài)變化形式(鼠婦有無觸碰蘋果)不一致,這樣就很難將此類計(jì)算裝置相互連接起來去構(gòu)造出一個(gè)更復(fù)雜的計(jì)算裝置。
接下來,針對(duì)上面存在的問題,對(duì)裝置進(jìn)行改造。其中一個(gè)需要調(diào)整的地方,是對(duì)用以表征數(shù)據(jù)的材料也就是結(jié)構(gòu)化信息的物理形式進(jìn)行改造,使其具有一致的表征數(shù)據(jù)的狀態(tài)變化形式。假設(shè)輸入和輸出部分都使用擋板來表示,那么在級(jí)聯(lián)的過程中,就需要設(shè)計(jì)用鼠婦推動(dòng)擋板的裝置,顯然,這很為難鼠婦,雖然說設(shè)置一個(gè)生物感應(yīng)裝置并借助機(jī)械設(shè)備來吊裝積木擋板,也能夠?qū)崿F(xiàn)目的,但這樣就太復(fù)雜了。相對(duì)而言,若將輸入和輸出都用鼠婦的行為來表征,則更為可行。例如,在圖5的例子中,在實(shí)現(xiàn)與邏輯運(yùn)算的過程中,無論是輸入數(shù)據(jù)還是輸出數(shù)據(jù),都是由是否存在觸碰蘋果的鼠婦來表示的。
圖5 一種用鼠婦行為表征輸入和輸出數(shù)據(jù)的與邏輯運(yùn)算裝置
這個(gè)與邏輯運(yùn)算的具體實(shí)現(xiàn)過程還是很容易想象出來的,左下角A和B兩個(gè)作為輸入的蘋果處,如果都沒有鼠婦,則右側(cè)輸出必然沒有鼠婦觸碰蘋果;如果只有一個(gè)鼠婦,則這個(gè)鼠婦會(huì)被困在墻角陷阱中,如果有兩個(gè)輸入,當(dāng)其中一個(gè)鼠婦被困于墻角L形陷阱中后,另一個(gè)鼠婦觸碰障礙(畢竟另一個(gè)鼠婦也是障礙)拐彎,最終到達(dá)作為輸出的蘋果位置。這恰好對(duì)應(yīng)與邏輯運(yùn)算的規(guī)則。當(dāng)然,只有虛擬的理想狀態(tài)下才能達(dá)到這樣的效果,現(xiàn)實(shí)中的鼠婦在幾次碰壁后是會(huì)從陷阱中逃脫的。以下各種方案都基于理想狀態(tài)下的鼠婦行為,不再一一說明。
當(dāng)輸入和輸出的事物狀態(tài)變化形態(tài)統(tǒng)一后,就很容易采用各種簡(jiǎn)單的組件相互連接搭建出復(fù)雜的系統(tǒng),如上頁(yè)圖6所示的裝置的功能,是用兩個(gè)輸入數(shù)據(jù)進(jìn)行與邏輯運(yùn)算,再和第三個(gè)輸入數(shù)據(jù)進(jìn)行與邏輯運(yùn)算。
圖6 級(jí)聯(lián)的與邏輯運(yùn)算的設(shè)計(jì)
要實(shí)現(xiàn)或運(yùn)算,就稍微麻煩一些,需要引入一個(gè)叫做減速墊的裝置(如圖7)。當(dāng)左下角A和B兩個(gè)作為輸入的蘋果處都只有一個(gè)鼠婦時(shí),當(dāng)然只會(huì)有一個(gè)鼠婦到達(dá)輸出的蘋果位置;如果有兩個(gè)輸入,因?yàn)闇p速墊的作用,B處的鼠婦因觸碰A處的鼠婦拐彎,從而無法到達(dá)輸出的蘋果位置,最終只會(huì)有一個(gè)鼠婦到達(dá)作為輸出的蘋果位置。
圖7 或邏輯運(yùn)算的設(shè)計(jì)
怎樣用鼠婦來實(shí)現(xiàn)非邏輯的運(yùn)算呢?可以引入一個(gè)鼠婦作為固定信號(hào),如圖8所示,當(dāng)輸入信號(hào)將這個(gè)固定信號(hào)攔截掉后,鼠婦就無法到達(dá)輸出端,如果沒有輸入信號(hào),這個(gè)固定信號(hào)就會(huì)到達(dá)輸出端,于是對(duì)應(yīng)了非邏輯運(yùn)算。在圖8的例子中,也同時(shí)解決了另一個(gè)重要的問題,就是要能區(qū)分結(jié)果為0和尚無結(jié)果這兩種情況,解決的方法是再增加一個(gè)鼠婦作為計(jì)算是否已完成的時(shí)間信號(hào),當(dāng)這個(gè)時(shí)間信號(hào)鼠婦到達(dá)用圓圈表示的指定位置時(shí),表示計(jì)算結(jié)果已經(jīng)呈現(xiàn)。在這個(gè)時(shí)間信號(hào)的輔助下,可以確保鼠婦未能觸碰蘋果這一狀態(tài),確實(shí)表達(dá)了計(jì)算后0的結(jié)果。
圖8 非邏輯運(yùn)算的設(shè)計(jì)
借助時(shí)間信號(hào)和碰撞攔截,不僅可以實(shí)現(xiàn)非邏輯的運(yùn)算,還可以實(shí)現(xiàn)其他邏輯運(yùn)算,如果計(jì)算過程中,信號(hào)可以復(fù)制(假設(shè)鼠婦能在某種機(jī)構(gòu)的作用下一分為二),那就能實(shí)現(xiàn)所有的邏輯運(yùn)算功能。在一些生物計(jì)算機(jī)的設(shè)計(jì)中,就采用這種碰撞、攔截以及復(fù)制信號(hào)的方法來實(shí)現(xiàn)邏輯運(yùn)算,限于篇幅這里不展開說明。自然界中許多事物天生具有可計(jì)算的特性,復(fù)雜的計(jì)算過程可以依賴非常簡(jiǎn)單的規(guī)則和行為構(gòu)建出來,和本文所列舉的僅存在于紙面上的理想實(shí)驗(yàn)不同,有研究者已用螃蟹群的碰撞來實(shí)現(xiàn)了邏輯運(yùn)算。[5]甚至于不需要生物,依靠無生命的實(shí)物如臺(tái)球,在理想的無摩擦的狀態(tài)下碰撞,也能夠構(gòu)造出計(jì)算裝置。[6]這種現(xiàn)象,被稱為結(jié)構(gòu)化信息的物理基底中立。
本文介紹的計(jì)算裝置很容易借助圖形化編程語(yǔ)言來實(shí)現(xiàn),僅用鼠婦、擋板、蘋果、減速墊這些簡(jiǎn)單的角色和行為規(guī)則,就能模擬出各種功能不同的計(jì)算過程,體現(xiàn)出用事物狀態(tài)的變化來表征數(shù)據(jù)的思想方法,希望這種規(guī)則簡(jiǎn)單、構(gòu)造和功能多樣的虛擬計(jì)算裝置能成為培養(yǎng)和考查計(jì)算思維的一種可供選擇的平臺(tái)。