馮文科
摘要:本文是作者對計算機工作原理教學(xué)的新探索,主要闡述了機器如何從學(xué)生熟悉的初中物理電學(xué)知識出發(fā),一步步演化成馮·諾依曼計算機雛形的過程。
關(guān)鍵詞:初中電學(xué);馮·諾依曼原理;二進(jìn)制
中圖分類號:G434 ?文獻(xiàn)標(biāo)識碼:A ?論文編號:1674-2117(2021)S2-0056-04
問題背景
《普通高中信息技術(shù)課程標(biāo)準(zhǔn)(2017年版2020年修訂)》中明確提出“高中信息技術(shù)課程旨在全面提升全體高中學(xué)生的信息素養(yǎng)”,并在必修課程《模塊2:信息系統(tǒng)與社會》的課程內(nèi)容中要求學(xué)生“描述計算機和移動終端的基本工作原理”。
經(jīng)過調(diào)查發(fā)現(xiàn),新高一的學(xué)生雖然對計算機軟硬件都有了相當(dāng)?shù)牧私?,但對“計算機軟件到底是怎么工作在硬件上的?”這一信息技術(shù)學(xué)科最基礎(chǔ)、最核心的問題,卻從沒有正式面對過——即便對于已經(jīng)學(xué)過高中信息技術(shù)的高二、高三學(xué)生來說也是如此。
根據(jù)這樣的課程要求與學(xué)生情況,我們需要重新設(shè)計計算機工作原理部分的教學(xué),補齊學(xué)生理論知識短板,為學(xué)生構(gòu)建信息技術(shù)知識網(wǎng)絡(luò)提供重要的理論結(jié)點。
設(shè)計思路
以初中物理電學(xué)知識為起點引入教學(xué)內(nèi)容。這部分知識是學(xué)生已經(jīng)掌握的,他們當(dāng)然知道計算機本身也是一種“電器”——盡管他們從未將這二者聯(lián)系起來。這樣一個新鮮的教學(xué)起點,必然會提起學(xué)習(xí)興趣、激發(fā)學(xué)習(xí)愿望、提升對新知識的預(yù)期,為教學(xué)內(nèi)容的開展做足準(zhǔn)備。
以進(jìn)化性問題鏈系統(tǒng)安排教學(xué)內(nèi)容。從初中物理電學(xué)知識到計算機工作原理,這之間的理論知識跨度還是相當(dāng)巨大的,因此需要一套精心設(shè)計的問題鏈系統(tǒng)將其分為幾級,而且其中每個問題都必須是學(xué)生現(xiàn)有水平之下可以理解并解決的,讓學(xué)生在不知不覺中感受到知識的增長、理論的提升,以及對計算機越來越深刻的理解……
實施過程
【任務(wù)一】世界上最簡單的顯示器什么樣?
這個顯示器的實物展示如圖1所示。
我們可以通過控制開關(guān),用小燈的亮滅,向人們顯示兩種不同的信息:允許/不允許、有人/沒人、好了/沒好……任意兩種互斥的都可以,可以隨意進(jìn)行解釋。
這個“解釋”的規(guī)則,就是在信息技術(shù)中經(jīng)常出現(xiàn)的一個詞——通信協(xié)議。只有收發(fā)雙方使用相同的通信協(xié)議,信息才能被正確傳達(dá)。
當(dāng)我們用0表示燈滅、1表示燈亮,上面提到的某個通信協(xié)議,就可以用表1的通信協(xié)議表格來說明。
二進(jìn)制與機器的緣分自此開始。在這個表格中,與某個現(xiàn)實意義(比如“允許”)對應(yīng)的二進(jìn)制序列(比如“0”),就叫作這個現(xiàn)實意義的編碼。
不過,有學(xué)生曾經(jīng)問我:為什么一個小燈只能用來表達(dá)兩種信息?改進(jìn)一下電路,用亮、弱、滅表示三種不成嗎?再或者,加個滑動變阻器,表示更多信息不成嗎?
聽起來不錯,但這些方案從未實際應(yīng)用起來,請思考:這些用一個小燈表示多種信息的方案為什么全被放棄了?
本任務(wù)的作用在于幫助學(xué)生建立電學(xué)與信息技術(shù)的最簡單聯(lián)系——小燈原來就是顯示器,讓學(xué)生從信息技術(shù)的角度重新審視電學(xué)的知識與現(xiàn)象。同時,在完成任務(wù)的過程中,順便向?qū)W生解釋了信息技術(shù)的幾個信息技術(shù)基本問題:①通信協(xié)議是什么?有什么作用?②編碼是什么?③為什么計算機一定要使用二進(jìn)制?
【任務(wù)二】想用這個顯示器表達(dá)更多信息怎么辦?
上面的“顯示器”已經(jīng)可以有很多實際應(yīng)用了,但明顯還不夠,如果我們希望它能表達(dá)“向前、向后、向左、向右”四種信息怎么辦?大家容易想到,用任務(wù)一的裝置雖然不成,但只要加一組小燈,就可以了,如圖2所示。
與此相對應(yīng),我們也需要使用新的通信協(xié)議,如表2所示。
按這樣的思路,不論有多少種信息,我們都可以通過控制“小燈-開關(guān)”組的數(shù)量來精確表達(dá)。
基于上面的分析,請回答下面的問題:①上述四種信息的通信協(xié)議表其實并不是唯一的,你可以設(shè)計出 ? ? 個。②如果我們設(shè)置了4個“小燈-開關(guān)”組,此時編碼長度變成 ? ? 位0/1,那么它最多能表達(dá) ? ? 種不同的信息。③如果我們希望表達(dá)80 種不同的信息,那么需要至少 ? ? 個“小燈-開關(guān)”組,此時的編碼長度是 ? ? 位。
本任務(wù)是對任務(wù)一的自然推廣:任務(wù)一的裝置我們只能表示兩種信息,當(dāng)需要表達(dá)的信息多了之后,我們又該如何處理?
任務(wù)二的作用是幫助學(xué)生了解如下幾個信息技術(shù)基本問題:①編碼二進(jìn)制位數(shù)與信息表達(dá)能力之間的數(shù)量關(guān)系。②通信協(xié)議的不唯一性。③機器能處理的二進(jìn)制位數(shù),是由硬件決定的。
【任務(wù)三】如果要表達(dá)的信息量過大,我們怎么辦?
理論上講,利用任務(wù)二的設(shè)備,只要有足夠的“小燈-開關(guān)”組和對應(yīng)的通信協(xié)議表,我們就可以用它來表達(dá)任何信息了。但是,這也僅僅是“理論上”的……看下面這個問題:請用這個設(shè)備,表達(dá)任意一個電話號碼。
北京的電話號碼由8位數(shù)字組成,從0000,0000至9999,9999共有1,0000,0000個??梢灶A(yù)見:如果給每個電話號碼分配一個編碼,我們至少需要27個“小燈-開關(guān)”組和一個1,0000,0000行的通信協(xié)議。
這樣的通信協(xié)議表,人查著麻煩——其實,機器查著也麻煩。所以,我們需要一個新的思路:為什么一定要給每個電話號碼分配一個編碼呢?我們平時讀電話號碼不也是一個數(shù)字一個數(shù)字地讀的嗎?只要我們把每個數(shù)字依次呈現(xiàn)出來,不也能表達(dá)電話號碼嗎?
于是,一個新的表達(dá)信息的方式出現(xiàn)了:我們?nèi)ケ磉_(dá)一些基礎(chǔ)信息,再用這些基礎(chǔ)信息的表達(dá)序列去形成我們最終需要的信息。
在這樣的思想指引下,我們的通信協(xié)議表只需要表達(dá)10種信息(數(shù)字0~9)即可,如表3所示。
這種用來表達(dá)基礎(chǔ)信息的編碼,因為它不光表達(dá)了信息,還同時說明了一個動作,所以我們給它們起了一個新名字——指令,整個表格也隨之有了新名字——指令集。
將上面規(guī)定的指令形成序列,就可以表達(dá)出任意一個電話號碼了。
任務(wù)三是任務(wù)二的自然進(jìn)化,在可以表達(dá)多于兩種的信息之后,任務(wù)三提出了超大量信息的表達(dá)問題,并給出了一種切實可行的方案,讓學(xué)生思路朝“可編程機器”的思路慢慢發(fā)展。
任務(wù)三主要滲透了如下一些信息技術(shù)基本問題:①“可編程機器”的基本思想。②指令及指令集有什么作用。
【任務(wù)四】信息表達(dá)沒問題了,如何提高信息表達(dá)效率?
任務(wù)三解決了如何表達(dá)任意電話號碼的問題,但它并沒有解決如何才能提高表達(dá)效率的問題——每個號碼由8條指令組成,指令切換是由手動調(diào)整開關(guān)完成的,手速再快,提升的空間也非常有限。
要想提高信息表達(dá)效率,必須對開關(guān)進(jìn)行升級。首先,我們要把這種常見的“鍘刀式開關(guān)”,更換成“觸點式開關(guān)”,如圖3所示。
在電路基板上開個窄縫,在窄縫兩側(cè)安裝一對帶觸點的導(dǎo)體,并將這對導(dǎo)體分別接入電路。兩端的觸點平時處于接觸狀態(tài),此時電路接通;但如果通過窄縫,在觸點之間插入絕緣體,則觸點分開,電路斷開;移走絕緣體,觸點恢復(fù)接觸,電路重新接通。
我們讓同一條窄縫同時經(jīng)過四個觸點開關(guān),用一張較大的絕緣體薄片從中穿過。在某個時刻,需要哪盞小燈亮,就在對應(yīng)的觸點開關(guān)下打個小孔接通電路即可(如圖4所示的數(shù)字“9”)(在0、3號燈的觸點開關(guān)之下,打了小孔)。
因此,只要在絕緣片上科學(xué)地打上小孔,再讓它由窄縫通過四個觸點開關(guān),就可以顯示任意的電話號碼了。
任務(wù)四是對任務(wù)三在信息表達(dá)效率上的提升。同時,它已經(jīng)具備了完整的計算機系統(tǒng)的核心部件。此任務(wù)是理解現(xiàn)代計算機工作原理的核心任務(wù)。
任務(wù)四重點解決了如下信息技術(shù)核心問題:馮·諾依曼計算機是如何工作的?
【任務(wù)五】理論提升。
至此,我們的“顯示器”已經(jīng)具備了當(dāng)代計算機系統(tǒng)的雛形,可以用于幫我們理解計算機工作原理了。
目前,我們?nèi)粘J褂玫挠嬎銠C都屬于“馮·諾依曼結(jié)構(gòu)”計算機,遵循“程序存儲原理”,即:把控制機器的指令序列事先存儲起來(這個序列就叫“程序”),然后再放到機器上快速執(zhí)行。雖然設(shè)計和存儲指令序列的過程非常緩慢,但在機器上執(zhí)行非??欤诓恍枰磸?fù)修改操作序列的情況下,它帶來的效率提升是革命性的。
馮·諾依曼體系結(jié)構(gòu)如圖5所示。
把我們的機器和圖5做一下對比就會發(fā)現(xiàn)結(jié)構(gòu)上的一致性。請回答如下幾個問題:①讓絕緣片前進(jìn)的裝置(比如人手)屬于 ? ? 。②絕緣片本身屬于 ? ? ,經(jīng)過技術(shù)上的不斷進(jìn)步,它最終演變成了現(xiàn)代的 ? ? 。③小燈陣列屬于 ? ? ,它最終演變成了現(xiàn)代的 ? ? 。④觸點開關(guān)陣列屬于 ? ? ,它最終演變成了現(xiàn)代的 ? ? 。⑤特別地,如果我們的機器就是一臺原始電腦,那么這臺電腦的“軟件”是 ? ? 。
任務(wù)五是整個課程的理論提升,讓學(xué)生從整體上清晰理解馮·諾依曼原理。
任務(wù)五解決了如下幾個信息技術(shù)基本問題:①馮·諾依曼原理的各部分之間如何協(xié)同工作?②什么是軟件?③軟件是如何運行在硬件上的?
【任務(wù)六】領(lǐng)域拓展。
通過上面的學(xué)習(xí),我們對計算機的工作原理已經(jīng)有了相當(dāng)?shù)恼J(rèn)識。請回答下面的問題,來檢驗一下你對計算機工作原理的理解程度。
“位(bit)”是個信息技術(shù)領(lǐng)域的概念:一個0/1就叫1位。
從硬件角度上講,一臺機器可以同時處理的最大的二進(jìn)制信息位數(shù),就叫作這臺機器的“位數(shù)”。所以我們的“顯示器”是一臺“4位機”。
從軟件角度上講,我們用的絕緣片上的小孔也對應(yīng)地分成了4列,分別控制4個觸點開關(guān),所以我們的“軟件”也是“4位”的。
基于這個提示,請簡答:為什么64位的電腦上可以運行32位的軟件,而 32位的電腦上卻不能運行64位的軟件?
實施效果
這樣依托于物理知識與實物教具的教學(xué)過程,收到了很好的教學(xué)效果。學(xué)生不僅深刻地了解了經(jīng)常出現(xiàn)在各種技術(shù)文檔中的專有名詞,還在課堂上舉一反三,理解了接口、總線、程序設(shè)計等預(yù)設(shè)之外的專有名詞。
相信這些知識,必定在將來某個時候,在學(xué)生的學(xué)習(xí)生涯中,發(fā)揮其應(yīng)有的作用。