陳凱



所謂黑箱法,指的是這樣一種方法:當對某個系統的內部結構和工作原理不了解(包括無法了解、難以了解或無必要了解等情況)的時候,可以通過對這個系統從外部輸入數據,然后觀察系統輸出的數據,比對輸入和輸出的聯結對應關系,判定系統的功能和特性,或者也可借此揣測系統內部的結構。在信息技術教學中,有許多地方可以使用到黑箱法,用以提高概念教學和思維培養的效率,下面試舉幾例。
● 用黑箱法簡化生活情境,挖掘思維深度——以信息的含義為例
“信息”這個概念在不同的語境中有不同的含義,在生活語境中,“信息”與數據的意義密切相關,而在信息論的語境中,“信息”與確定性(或不確定性)的量度有關。對于前者,通過對數據的采集、記錄、計算和展現等步驟來實現信息的處理,是“數據與計算”教學模塊的主要線索之一,至于后者,關于如何通過計算機系統消除不確定性的需求始終蘊藏在信息技術的各個教學模塊中,直到在“人工智能初步”模塊中更鮮明地顯現出來。
日常生活是豐富而復雜的,人們的語言更是靈活多變的,這就使得學生對如何從數據的角度對“信息”一詞進行理解產生迷惑,甚至說,一些教師自己也是存在迷惑的,這時可以考慮創設一個對于現實世界有著映射關系的較為簡單純粹的情境,來凸顯語言符號的所指。在教學中,筆者編寫了這么一個小故事:
因為不明病毒的入侵,兔子大森林爆發了傳染病,熟悉生物學的凱凱兔志愿前往第一線支援疫苗開發的研究工作。凱凱兔向自己媽媽告別時,媽媽問:“你什么時候才能回來啊?”凱凱兔回答:“等我負責的技術難題被突破了,就可以回來啦。”
媽媽很想念孩子,她等了很久很久,終于有一天,快遞送來了一個小禮盒,小禮盒的面板上有個按鈕,一按,里面彈出一只小玩具兔子,一邊晃著腦袋,一邊連著喊了7聲媽媽。
第二天,按了按鈕后彈出的兔子玩具喊了6聲媽媽,到第三天只喊了5聲,這到底是什么意思?兔媽媽弄不明白,直到第八天,玩具安靜地一聲也不叫了。就在這時,門外響起了凱凱兔的喊叫聲:“媽媽,媽媽,我回來啦!”
在上面的例子中,到了第八天,兔媽媽就可以知道,原來這個禮盒是孩子回家日期的倒計時裝置,數據和意義聯系之后,相關信息就呈現出來了。
剛才的結論聽上去很合理,但也存在值得深入討論的問題。畢竟,兔媽媽可能在收到禮物三四天后,就已經意識到數據中可能存在某種意義了,或者說,這時她或多或少已經獲取了某些信息,她或許猜對了這些數據的意義,或許猜錯了,那么,這個時候,她到底有沒有接收到孩子即將回家的信息呢?要解釋這個問題,可以將玩具看成是一個黑箱,它的輸入是天數,輸出是玩具兔子叫聲的次數。假設在平行世界A,這個黑箱的輸入和輸出是有規律的,但在另一個平行世界B,黑箱的輸入和輸出完全沒有規律,輸出的次數完全是隨機的,那么,兔媽媽是無法從平行世界B中的黑箱里獲取到信息的,而在平行世界A,卻能獲得一個對于未來狀況的預期,這個預期是否能被驗證,其實是和概率有關系的,這說明,信息的概念和概率是存在關聯的。接下來可以繼續思考,既然兔媽媽能獲得這樣的預期,一個人造的智能機器兔媽媽裝置也一樣能通過對數據的分析獲得預期,并且,這個人造機器兔媽媽根本不需要知道第八天中數據0在生活實境中的具體意義。
在教學中,這個小禮盒可以用簡單的程序來模擬實現,也可以真的借助單片機和語音播放芯片來制作成一個電子小裝置,這些都可以和后續的如程序算法、信息處理系統、開源硬件、人工智能等教學內容遙相呼應。
在上述例子中,通過設置黑箱,避免了日常生活情境中紛繁蕪雜的細節對思考造成干擾,使得問題的思考有了更明確的指向性,也更有深度。下面再對兔子的故事做一點改寫,大家有沒有興趣試著回答故事中提出的問題呢?這個問題并沒有標準答案。
……一按,里面彈出一只小玩具兔子,一邊晃著腦袋,一邊連著喊了7聲媽媽。
第二天,按了按鈕后彈出的兔子玩具喊了6聲媽媽,到第三天只喊了5聲,這到底是什么意思,兔媽媽心里很清楚,因為事先就已經約定好了,一連串依次遞減的數字,其實是自家孩子即將回家的信號啊。
第八天,凱凱兔如期回到自己的家,桌子上擺滿了自己喜愛的菜,啊,溫暖的家。
第九天的時候,兔媽媽隨意按下按鈕,玩具兔子又開始叫起媽媽來,這是怎么一回事呢?凱凱兔驚訝地發現,原來自己錯拿了玩具,這個玩具本來就是隨機喊叫的,只是前幾天,它都十分湊巧地對應上了次數遞減的規律。這么說來,兔媽媽究竟有沒有收到正確的信息呢?
必須承認,“信息”是一個很難解釋的概念,與其強行去解釋,不如用它作為激發思維碰撞的撞針。
● 用黑箱法約束操作過程,強化思維方式——以最深色選取為例
大家常常會討論如何拓展學生的思維,但也有很多時候,為了將特定的思維方式彰顯出來,用黑箱對思維進行框定。下面是一個顏色選取的例子:存在一系列不同深淺的顏色,這些顏色像顏料一樣存儲在框中,從上至下排列著,要求將其中最深的顏色找出來,但不能移動框。這里之所以用顏色而不是數字,是為了便于在畫圖軟件中對數據進行機械性的操作。之所以不能移動框,是因為要對應程序算法中數組的結構。原始圖樣如圖1所示。
圖1 放在框中的深淺不同的顏色
人眼一望便知,第二個框中顏色最深,但對一個機器或程序來說,它往往缺少全局的視野,盡管存儲器中所存儲的數據可能很多,但在某個特定時間段里,內部數據只有一小部分是對計算裝置顯現的。在這五個框旁設定了一個待比較框,默認是最淺的白色,為后續操作方便,將待比較框在豎向方向上拉長。然后,就可以通過取色工具和填充工具,手動模擬出在一系列顏色中選取最深顏色的操作。在操作時,可以將畫圖軟件的尺寸拉小,這樣就模擬出只有部分數據對外顯現的效果,如下頁圖2所示。
操作時,學生只能同時看到兩個框,如果待比較框中顏色淺,則從顏色框中取色,填充至待比較框,否則就不做填充。每做完一次比較、填充(或不填充)操作后,則往下翻頁,顯現出新的顏色并重復剛才同樣的操作。于是,在思維中就存在一個黑箱,它有兩個輸入和兩個輸出,兩者關系如下頁圖3所示。
接下來,就是將黑箱的輸出的結果,再次反饋到黑箱的輸入端,這樣一來,顏色選取的任務就成為一種迭代操作,具有了非常鮮明的自動化的特點。雖然人的操作動作被約束了,但卻更容易顯現出計算思維的特征。
● 用黑箱法回避操作細節,建構思維模型
筆者一直在思考一個問題,學生對于像從1累加到10這樣的簡單循環結構程序,究竟是真正理解了其工作原理,還是僅僅簡單地將循環結構三要素和常用語句套用到問題的解決中?為了解答這個問題,筆者設計了兩個小游戲,一個叫貨車搬磚,一個叫黑箱變寶。先來看貨車搬磚,這是一個棋盤游戲,棋盤布局如下表所示。
假設貨車上磚塊無限多,貨車按箭頭方向行進,當貨車經過X區倉庫下方時,就會在X區卸貨,新添加的磚塊數量與A區磚塊數量相同,當貨車經過A區下方時,就會在A區添加一塊磚,然后貨車重復剛才的行為,問:當貨車第n次回到出發點時,X區和A區磚塊的數量?能比較容易看出,貨車和倉庫的協同運作,相當于實現了數字的累加。
第二個游戲叫黑箱變寶,是一個簡單的圖形界面游戲。游戲中有兩個加法機、兩個傳送機,它們是四個黑箱,每個黑箱的輸入在左側、輸出在右側,在3號傳送機的左側已存放了一顆鉆石,用“@”符號表示,游戲界面如下頁圖4所示。
點擊3號傳送機的黑箱按鈕,鉆石會被傳送到右側輸出端。當鉆石出現在黑箱右側時,可以選擇繼續在右側保留鉆石,或點擊按鈕實現清空鉆石,或將鉆石傳送到某指定編號的黑箱的左側輸入端的功能。
加法機的工作方式基本和傳送機相同,唯一不同的,是鉆石輸入黑箱后,會多加一顆鉆石到右側輸出端。下頁圖5是加法機效果的演示。
對于黑箱的操作實際上對應了程序代碼中的賦值、計數、累加操作,但游戲過程中,玩家并不需要事先掌握任何程序代碼知識和語法細節。
游戲的要求是,用黑箱操作這些鉆石,來計算1加2加3……數字累加的結果,并要求在操作過程中,點擊按鈕的順序,必須遵照一定的模式。例如,假設游戲界面里的按鈕的名稱分別是A、B、C、D……,那么,A、B、C、D、A、B、C、D、A、B、C、D……類似這樣具有相同模式的點擊次序是被允許的,而A、B、C、D、A、B、D、A、C、D……類似這樣的點擊次序是不被允許的。
設想一下,如果任務是1加上1,再加上1,再加上1……那么就很容易實現任務,只要不停地重復把加法機右側的鉆石移動至加法機左側,然后輸入黑箱再輸出的動作即可。但若要實現累加,就必須綜合使用不同的黑箱,實際上,這個任務的完成,也并不需要用到所有的黑箱,如何用最精簡的方式完成任務,也是值得玩家探索的。
第二個黑箱變寶的游戲的難度明顯高于第一個貨車搬磚的游戲,貨車搬磚的游戲讓學生經歷了累加操作的過程,但黑箱變寶卻要求學生自己利用黑箱構建出一個可實現累加操作的系統。如果學生的構建是成功的,那么就可以進而將構建這個系統的思維方法用到循環結構算法的程序編寫中。所以,用于黑箱協調使用的方法,成為溝通具體的現實生活和抽象的程序代碼之間的思維聯結點。
這一組游戲可以用來驗證在學生學習和掌握了循環語句結構后,其解決具體問題的計算思維能力,尤其是借助數據的變化建立結構化模型的能力。小范圍的實驗結果是,對于貨車搬磚游戲,大部分學生在理解上沒有太大困難,對于實現累加的程序的流程圖或代碼,大部分學生也能完成,但那個黑箱變寶的游戲卻難倒了很多學生。這從一定程度上說明,學生在編寫程序完成累加任務的時候,主要依靠的是記憶、模仿以及對數據變化的跟蹤,而缺少系統模型構建的能力。并且,這還給出了另一個可供參考的研究思路:那些尚未有循環結構程序設計學習經驗的學生,能否通過這些游戲交互,并結合基本的循環結構代碼語法的資料,自主地設計出用循環結構實現數字累加的程序代碼?這是為了更清楚地獲取到明晰的數據,用以評價按基于建構主義理念的方法開展程序算法教學的價值和效率。