費海明



“計算思維”概念自進入教育視野后,備受關注。但在教學實踐中,教師對“計算思維”有不同的理解。一部分教師將“計算思維”視為計算機科學概念的大集合,把教學如剪貼板、驅動程序、郵件傳輸等視同計算思維教育的分解;而另一部分教師則將“計算思維”與“程序算法”畫上約等號。起初不起眼的微小的理解差異,經過多次迭代,最終會發展成截然不同的實踐結果。鑒于此,筆者認為需要追根溯源,透析計算思維的內在要素,追問計算思維教育的最終目的,才能在理解的基礎上,生發教學的創意。
計算思維的內涵與追求
對計算思維內涵的理解,可追溯至圖靈時代。圖靈將機器的操作分解為“最基本操作”,以至于不能再分解,讓機器從一個無限長的紙帶中讀取符號序列(將要求解的數轉換為機器可識別的符號),機器逐一執行“最基本操作”,最終實現計算的自動化。現代計算機的計算不僅要實現自動化,更要追求高效率、大規模、更穩定、更安全、更智能的計算,這是創造性思維向著“可計算”的方向不斷迸發與迭代的過程。如要做到多任務,那就要讓CPU“分時”;大規模的數據要快速排序,那就會用到“分治”的算法思想;傳輸大文件,可將文件“分段”發到目的地后再“重組”;想要讓更多的用戶同時在線訪問,那就將服務器“分身”,用分布式、讀寫分離和協調器等技術應對大規模計算。
計算思維(狹義)究其本質,是確定問題的“可計算”部分及“問題解決方案”至“計算機可執行方案”這二者之間實現轉化與創造的思維過程。這一過程富有挑戰性,是一個分解、抽象、模式識別和算法構建的思維過程,充滿了“分合衍變”的辯證思想。為計算而分之,又為目的而合之。合中生分,分而治之,分合復始,“分與合”的組合與衍化,使得“問題解決方案”向著“可計算方案”不斷轉化與優化,創生出信息技術世界的實體與具體概念,如圖1所示。
“計算思維+”視野下的教育融合
計算思維的培育應融入教育整體和信息技術學科的核心素養培育過程。
首先,計算思維可以與其他思維培育相融合。當學生經歷問題的逐步分析和抽象時,就是在培育邏輯思維;當學生發現原系統功能或算法的不足,用計算思維進行優化改進時,就是在激發創造性思維。
其次,計算思維可以與學科三大核心素養培育相融合。信息技術的核心素養包括計算思維、信息意識、數字化學習與創新和信息社會責任四大部分。在“計算思維+”的視野下,信息意識追求的是識別重復結構、發現冗余結構、洞察內在結構、覺察信息背后數據、推斷功能背后算法的“意識”;數字化學習與創新就是用計算思維審視現存系統和現實問題的學習與創新;信息社會責任則是對技術與信息的創造者的正能量的宣揚、感悟和仿效,以計算思維為“透鏡”,增強技術防護意識,自覺維護數字社會的安全。這樣,在計算思維的加持下,各核心素養內涵進一步豐富,其培育得以整體優化。
中小學計算思維培育的切入點
對于中小學信息技術教育而言,以項目為載體開展計算思維教育,從具象到抽象,具有可操作性。在項目實踐中,教師要有超越具體的項目和技術的意識,通過優化、逆構等視角,引導學生向著“可計算”的方向展開思維過程,并不斷反思,從而實現計算思維的內生與發展。
1.優化視角——在項目實施中滲透計算思維
優化就是面向更優異目標的一種思考與行動,一種最優解的追求。應用優化視角,可以引導學生對原方案(算法)進行審視,應用抽象、分解和模式識別,實現原方案(算法)的重構或改進。
案例1:作文集“優化記”。
第一步:抽象。先不考慮作文集的主題、篇數、文本和插圖,也不考慮用Word還是WPS,只考慮作文集要處理(計算)的基本要素——標題、署名、正文等。
第二步:分解。將作文集項目制作逐步分解,分解至“能清晰地與字處理軟件的具體工具對應”為止。
第三步:模式識別。在分解的基礎上,思考:哪些設置屬于同類項,可以合并?哪些是屬于默認設置,可以忽略?
第四步:算法構建。在模式識別的基礎上,優化作文集的制作流程(算法),如下頁圖2所示。
通過對項目的要素與步驟的分解,可以引導學生發現相似、相同的部分并加以統整,避免表示的冗余或操作的重復,以實現問題解決(算法)的優化。例如,作文集的文字格式設置是一項不小的工程,很值得優化研究;而制作PPT的過程中是新建還是復制某頁基礎上修改,這事實是“哪種方案最優”的思考,是一種優化視角下的分解和模式識別。
2.逆構視角——在原理探究中發掘計算思維
逆構,是由果索因,是指從現有的技術思考該技術的實現過程。逆構視角不是關注技術的應用,而是關注技術工具的“重新發明”,即讓學生體驗技術開發者的計算思維過程,感受開發者的智慧和精神。
案例2:Excel填充柄誕生記。
在“初中生睡眠時間調查統計”項目中,教師提問:“填充柄如何實現公式的自動復制?”學生通過列出E列單元格上的一部分公式,提煉出“通項”公式“=24-Ci+Di”。接著,教師將提煉出的公式轉換成VBA代碼,并用循環結構令其“反復做”,當按下按鈕那一刻,學生驚奇地發現——填充柄誕生了(如圖3)。
抽象出來的公式與最終的VBA代碼形式,會略有差異,但其結構是一致的。人腦中的算法轉化至機器內能運行的符號表達,算是一種“入鄉隨俗”。要讓機器執行人腦的算法思想,則必須與機器中已人為預置的、已抽象的協議或接口“打交道”,這與圖靈思考的“可計算”的本質是一樣的。
以逆構視角觀察,計算思維研究和討論的資源變得無處不在,自然也就取之不盡,用之不竭。例如,Word文字居中——逆構“字符串居中算法”,未封閉圖形的填充漏色現象——逆構“廣度搜索”等。
3.突圍視角——在現實約束下激發計算思維
突圍就是突破困難或約束的思考與行動。在用計算機求解問題時,常會遇到存儲速度、存儲容量、計算速度、網絡帶寬等問題,這些困難限制了問題求解的規模、速度、穩定性和安全性。在實際教學中,教師可以構造一種模擬的約束情境,在不降低問題難度和更換計算資源的前提下,思考突破的方法——突圍視角,這將極大地激發學生的計算思維。具體例子如下表所示。
4.開發視角——在程序設計中培育計算思維
開發指的是程序設計與開發,這也是較為經典的計算思維培育視角。程序開發是“原生”的計算思維孕育場,其明確而有限的指令(函數)、面向用戶的交互設計、忠實如一的執行調試和樸素算法的不完美等體驗,都會激發學生拿起“分解、模式識別、抽象、算法構建”的思維武器,為實現程序的誕生與升級而不斷探索。
案例3:抽獎盤——計算思維知多少。
第一步:抽獎盤有哪些對象(角色)?它們有什么行為?學生發現轉盤上的指針不能隨著轉盤轉動,因此兩者需要分離,對應于Scratch中的2個角色。
第二步:轉盤如何轉動?在實踐中學生發現,輸入的度數是讓轉盤“瞬間定格”于最終度數,而非預想的“旋轉”,而且該類指令不支持轉動時間的設置,若要實現動畫,只能對旋轉的度數進行分解,讓轉盤每次只旋轉一個小的角度(如15度),借助循環執行“合成”轉動的動畫。
第三步:如何模擬出每次轉盤停的位置不一樣?用隨機數指令即可,但隨機數的取值范圍與旋轉執行次數之間有什么關系呢?可引導學生模式識別,轉盤隨機停留其本質上是360度范圍內的隨機取值。若想轉動5圈后隨機停,則隨機數取為360÷15×5(120)~360÷15×6(144),如圖4所示。
以上構建的程序實現的轉動是“生硬”的。對于初中生而言,鼓勵學生用一次函數y=kx+b或正弦函數y=sin(x)實現緩動,如下頁圖5所示。此外,還可以借助人工智能技術,支持更友好的交互和更智能化的抽獎。
計算思維培育的四大視角并不孤立存在,而是互相交融。“逆構視角”以現有技術為對象,乃是重新經歷“開發(視角)”的過程;而“突圍視角”何嘗不是一種約束條件下指向內在的“優化(視角)”。教師擁有四大視角并實現互融,計算思維教育的點滴創意也就在教學實踐中不斷誕生。
仔細觀察眼前的現實世界,萬物看似形態各異,但其內在結構與要素卻有著驚人的相似。紛繁復雜的信息世界,誰會料到隱藏于后臺的系統和映入眼簾的程序都來自“可計算”的初心。兼顧機器的特性,突破算力的限制,直至人的思維融入至人類自身創生的系統,無數的計算思維演繹出一場場“分與合”的演變,繁衍出層出不窮的技術、各具個性的項目和豐富多彩的信息,最終推動信息世界版本的分秒更迭。計算思維的“可結晶”、可分層、可迭代,正是預示著一場恢宏無比的全世界腦力聯網的超智能演化。這一切可以看成是“生命為機器賦智能”,也可以視為“技術為生命賦活力”。計算思維的內涵是如此的深邃,而探索計算思維的教育是如此的充滿挑戰與樂趣。