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