王愛勝


隨著編程教育的推進,教與學都必然會從語言語法、算法設計繼續向計算思維、編程文化高階發展。這是一門課程不斷成熟的表現,也是編程教育內涵與外延同步螺旋上升的需要,更是編程文化慢慢自我塑造的過程。編程文化,可以既包括編程自身的思維方式、價值取向、意識形態等具體表現,也包括編程學習時采用的人文(文化中的先進、核心部分)的主題、人文的產品或人文的元素等與之契合關聯。但是,我們往往單純地把采用社會文化主題的技術實現作為編程文化,這是缺乏深度的。本文旨在分析比較難以理解的編程文化與人文主題的編程在內涵上如何契合。
● 人文主題在編程文化中的內涵表現方式
無論是基于代碼編程的算法教學,還是基于圖形化編程的作品設計教學,大家都會關注“立德樹人”這一重要的教育目標,這是提升學科核心素養的重要方向,也是提高課程內涵的重要途徑。
在編程教學的范例內容選擇方面,教師往往會首先選擇數理問題,因為數學、物理等學科問題的數據關系明確,容易構造數學模型,并且簡單易懂,難點在于需要更精確地分析學生的數學知識基礎;其次是密碼、遺傳、心理分析、人機對話等邏輯類型的內容,因為這類問題能夠很好地體現邏輯判斷與推理;再次是社會文化、趣味故事等主題內容,這方面容易激發興趣,能夠降低認知難度,適用范圍也廣,極受歡迎。不論什么內容,又可能會區分為語言、算法和作品不同的教學理念。可以說編程文化的具體形成與教學內容、教學理念與教學形式都是密切相關的。
編程文化中吸納人文內涵,往往有三種比較有深度的表現方式:一是人文產品設計類,編程項目直接采用基于人文關懷的科技主題,通過編程來解決具有人文需求的實際問題并形成相關產品,如“設計一款老人摔倒自動報警器”,這能夠與計算思維高度融合;二是人文元素吸納類,在編程文化中融進人文素養,尤其是針對信息意識、數字化學習與創新、信息社會責任等相關的人文元素,如設計程序研究函數圖像時,采取圖形界面進行參數調整以靈活地研究函數圖像,回避紅綠顏色的對比對色弱者進行關照等,雖無非人文產品但有人文元素;三是編程技術文化思想類,編程文化在算法、代碼上的文化內涵表現,如迭代算法的數據繼承性是“算法優化”,也是“動力源泉”,又如分治算法是高效的算法設計,也是多線程、區塊鏈等技術哲學的價值發展等,這會對幫助人、發展人的技術文化價值有更深刻的表現。
不論哪一類情況,在編程教學中都需要把編程文化與人文進行內涵契合。通過分析采用文化主題編程教學,可以探討兩種文化相互促進的意義,同時也能彰顯編程文化吸納人文教育的價值意義。
● 人文主題的處理過程,需要與編程文化(技術特色、概念本質)保持一致
很多編程技術都具有特定的功能與用途,這是編程自身的技術文化價值所在。教師在采取包括人文主題在內的任何情境、任務、問題或項目時,都要考慮主題內容與編程的特色技術、概念本質是否保持一致,避免教條地使用技術造成問題解決過程、主題處理過程與技術、概念的貌合神離,甚至傷害對技術價值的認知,也損害文化主題的意義。
例如,泰山版初中信息教材中采用了分組進行基于“列表”存儲、交流“品質”的人文主題的數據編程處理,通過輸入、追加、顯示、交流等列表操作,對數據存儲、數據加工的編程技術、列表概念、文件讀取等進行學習。其過程是,首先請每一個學生找出自己的多項品質,利用列表追加技術,如list.append(“勇敢”)、list.append(“善良”)等完成數據獲取、存儲,在數據獲取過程中交流、認同、學習其他同學的優良品質;然后,通過列表概念認識數據存儲的方式,通過列表訪問技術查看小組的數據存儲成果,形成品質認同效果;最后,通過向文件的寫入列表數據技術[如f.write(list)],對學生品質、小組理念進行存儲、提交、展示,完成從個人到集體的“品質聚合”,在這整套的項目活動中,在人文上對學生的品質養成意義非凡,對列表技術的動態存儲、數據訪問與管理的運用也思路清晰。更主要是的,列表的動態管理與品質的動態培養相契合。
再舉一個技術、概念與主題處理不甚恰當的例子。某學生用書,在大量借鑒上述教材進行開發的過程中,可能感覺此例很好,又考慮到版權問題,也或者只是想進一步提高站位,采用了核心價值觀的文化主題。但是,程序設計中幾乎沒有數據變化和發展。這就出現了文化主題與技術特色、概念本質不匹配的問題。主要原因是,其采用的文化主題中的詞匯是固定了三類(每類4個詞,共12個詞),因為是固定詞讓學生一次性輸入,“動態”存儲意義不再必需。實際上,這12個詞是可分成三個層面來說的,存儲在一個列表中也顯得與主題與技術貌合神離。如果編寫者真的深度理解了列表技術內涵,該主題也可以改進得更恰當。例如,方案一是可以使用三個列表存儲成三個分類的各自4個詞匯,在顯示時可以分類訪問;方案二是可以提高列表技術難度,使用列表嵌套形成諸如s=[["1","2","3","4"],["a","b","c","d"]]的分類存儲數據模型。數據訪問時,可以使用print([0][3])技術分類訪問數據,如此可讓價值觀的存儲、查詢等更有“理解”意義。
可見,在采用列表處理數據時要體現其動態、分類特點,不能簡單地存儲無表達意圖的數據,如在使用字典處理數據時,就要體現出其“索引”特征等。如此,能更容易地讓文化主題與技術概念進行內涵融合、過程協調、目標一致。
● 人文主題的編程功能設計,要發揮計算思維的優勢形成雙重文化契合
在采用問題、情境、任務或項目式進行編程學習時,往往都會有一定的功能設計,采用編程來完成其過程必然要利用、發揮計算思維的優勢。即,一方面要從問題分析、算法設計、代碼編寫與調試的流程來進行整體設計,另一方面更需要注意利用關鍵算法,發揮計算優勢來實現特色功能。這樣,就能讓文化主題的功能與計算思維相結合,以其特色功能更現編程的必要。
例如,很多教師在教學中采用古詩作為文化主題進行輸入、輸出等編程基本語句的練習,這樣較短時間的操作練習也并無不可,但是程序與古詩的“結合點”在哪里呢?文化的內涵與技術內涵無法契合。筆者在針對數據查詢功能設計時,就利用“飛花令”的文化主題進行了編程實現,突出數據獲取(讀文件)、數據查詢(查找指定詞句的詩)、數據呈現(交互式人機界面)的現實,尤其是針對關鍵算法——“枚舉”進行生動、有趣、真實的基于文化主題編程的探索。
在教學中,首先進行的是改良版的“飛花令”接詩游戲,體驗人腦搜索信息的過程——“根據關鍵詞回憶知道的詩句”。多數情況下學生接得少,由此體會人腦存儲的局限性,并提出大量數據存儲、檢索的意義。然后,請學生嘗試“飛花令”游戲,體驗“電腦飛花接令”的功能,激發對編程的興趣,提高對計算機進行數據檢索的認識。接下來,讓學生探究“飛花令”游戲程序,討論、交流、問答數據如何輸入、檢索、輸出的程序工作,像閱讀英文一樣閱讀程序,像體會思索一樣體會計算思維,整體上提高對程序功能的認識。再接下來,提出程序改進的建議,嘗試更優化的程序修改,如關鍵詞的輸入精準(xl最在的問題)、多個關鍵詞的邏輯搜索(and、or)等技術拓展。最后,使用其他詩歌文本做成通用“飛花令”程序,形成對數據存儲的結構、枚舉算法的工作過程的技術認知。“飛花令”程序及注釋如圖1所示。
● 人文主題的編程效果表現,要通過編程的最新技術進行彰顯
采用人文主題進行編程,往往需要在主題表達效果上有較好的表現,這樣學生才能更有興趣,也才能更加體現計算思維與技術創新。在課堂教學中,技術較好的教師往往會利用更高超的程序設計來增強主題效果,如可以通過音樂模擬、炫酷動畫等實現。當然,通過最新的技術,如人臉識別、語音識別、文字識別等也可以達到增強效果的目的。
在這類的技術學習中,我們不必過度涉及較難的底層編碼,可通過拓展的功能模塊來更好地優化主題表現。例如,上述“飛花令”詩句中,可以指導學生補充完成語音朗讀接令詩句的功能,大幅度地提高文化主題的表現效果,并彰顯出新技術的魅力。
參考“朗讀飛花令”的技術測試代碼(如圖2),分組合作應用在“飛花令程序中”。
借鑒以上技術測試程序,通過引用“模塊”、“自定義函數”、朗讀詩句、延時等基本的功能設計,完成“朗讀詩句”的效果。可見,在新技術的加持下“飛花令”文化主題更顯精彩,程序的技術內涵也得到極大程度的提升。
綜上所述,在編程中使用人文主題,要避免隨意的、無特色的文化選題和技術應用,這樣才更容易形成有意義的編程文化,雙重文化、兩種內涵的相互契合,能做到既不浪費人文主題又不泛化編程文化,讓編程文化更加熠熠生輝。
蒼山點題
編程教學無疑是這一輪新課程改革的重頭戲,甚至是核心內容。但是,編程要面對的首要問題就是編程語言的選擇,然后是面對教學的具體實施,其間或最后也不得不面對考試。這三步曲已然在各地盡情盡興地演奏起來。可是,奏著奏著就開始出現了很多不同的曲風,慢慢就會演繹成極具地方特色的曲調。因為各地教育基礎、考試方向、管理力度、評價措施等很多方面都不一樣,所以很難避免分化現象的發生。可是,作為國家課程,不用采用什么樣的曲風或調式,主旋律還應是大致一樣的,在此我們應試圖從編程文化的角度不斷探索、討論,激發大家在共唱新課程這同一首歌的過程中更自信、更主動、更深刻。
第一篇文章,旨在分析新課程、新教材在編程語言選擇上的價值取向。面對計算機語言隨著信息技術的發展一直在不斷發展的局面,我們應理性認識各種編程語言都有著各自的優缺點和應用領域,觀察教材選擇編程語言所反映的科技趨勢和時代要求。現在,是數字化時代,人工智能和大數據技術大行其道,Python語言恰逢其時。本文從入門需求、算法詮釋、問題解決三個角度進行了深度的內涵分析,實際上這也正是編程文化在學習者身上的形成性體現。作為教師,我們要做的不是抱怨Python語言的各種不便,而應該主動學習,擁抱變化,做好學生的啟蒙者和領路人,倡導一種與編程技術共同進步、輕語言重算法的良好的編程文化氛圍。
第二篇文章,主要是借助編程文化與人文教育的內涵契合,分析如何讓兩者相得益彰。以人文(優秀文化、核心文化)主題作為程序學習項目來設計,對人文主題與技術概念的關系、人文主題的編程功能設計特色與計算思維的關聯、人文主題效果表現與新技術的聯系等進行實例分析,著重對數據獲取、數據檢索、數據呈現以及枚舉算法的實現進行了編程文化與人文主題的內涵契合分析,讓我們更深入地體會編程與人文主題內容應是深度融合的,而不是簡單的拉郎配。
目前,編程文化還不是一個概念,而只是一個研究的方向,研究如何讓編程融入我們的生活、學習與生產,超越單純的一種知識學習,這是課程發展的需求與生機,所以期待您的經驗分享。