【摘 要】小學生學習Python語言的目的不同于成人。小學生學習Python語言是為成長而學,側重于基礎性。在編寫基于小學生的Python語言校本課程時,要立足學生的長期發展,循序漸進,因材施教,既要使編寫內容正確,又要讓學生感到有趣。要關注小學生思維的完整性和邏輯性訓練,關注培養小學生的思考力、創造力,為學生的未來發展助力。
【關鍵詞】為成長而學 信息科技教育 編程學習 Python語言
一、提出問題
現在有一種流行的說法:Python語言最接近自然語言,語法簡潔、清晰、易懂,擁有眾多的第三方庫,非常適合編程初學者學習使用。
如果初學者是成年人,這種說法完全正確。如果初學者是小學生,這種說法就值得商榷了。Python語言最接近自然語言,這個“自然語言”是指漢語嗎?不是,是英語。小學中高年級才開設英語課程,如果按正常的教學進度,小學五、六年級的學生英語剛入門,他們可以把學會的簡單的英文單詞、語法遷移到Python語言中,但想以“最接近自然語言”為突破口來學習Python語言是不現實的。
Python語言的語法是簡潔、清晰的,但對小學生來說是不是易懂的呢?簡潔的語法,有時是會增加學習難度的。例如,賦值語句tot+=2中使用了由“+”“=”構成的增強賦值運算符“+=”,這樣的語句很簡潔、清晰,但學生在學習時需要轉個彎,先轉換成煩瑣一點的普通賦值語句tot=tot+2,才能更容易消化、理解。同時,計算機高級語言的語法結構和漢語的語法結構是不一致的,在進行編程時,要從母語的表述方式轉換成用計算機語言來描述,這涉及思維方式的轉換,對小學生而言特別不容易。
擁有眾多的第三方庫,對于項目應用的開發者來說,可以提高工作效率,但也容易讓人迷失在庫的海洋里。小學生可支配的時間有限,以“眾多的第三方庫”作為學習內容的利弊,也是值得探討的。
對于小學生來說,想要學會Python語言是不容易的。這種“不容易”提醒所有的教育者要正確面對現實,才能找到正確的解決方法;這種“不容易”也激勵著教育者思考:如何才能讓“不容易”變得“容易”呢?開發基于小學生認知規律和學習發展規律的課程是重要的一環。
二、解決策略
在開發小學生Python課程時,要明白成人與小學生學習Python語言的目的是不同的。成人往往是為工作而學,為開發某個具體的項目或應用程序而學,側重于應用性。小學生是為成長而學,以Python語言為載體進行思維的完整性和邏輯性訓練,掌握利用計算機解決問題的方法,培養思考力,激發興趣,側重于基礎性。
“為成長而學”是小學生學習Python語言的目的,在這個目標的指引下,開發的課程要做到對、好、趣、高。
(一)“對”
編寫的內容要正確,這是最基本的要求。但由于Python語言的獨特性,做到“對”并不簡單。例如,一般程序設計高級語言中的變量是“箱子”,賦值是把某個表達式的值裝入“箱子”的過程;而Python語言中的變量,是對象的標簽,是對象的引用,賦值是把變量指向某個具體對象的過程。只有基于“指向”“引用”的認識,學生才能理解多變量同時指向同一個組合類型對象時,修改某個變量指向的對象元素后,其他變量的值也會發生變化。因此,不能把Python語言中的變量比喻成“箱子”。
又如,一般程序設計高級語言中for循環是計數循環,而Python語言中的for循環是遍歷循環,遍歷循環可以實現計數功能,但它不是計數循環,學生只有從“遍歷”的角度去理解,才能明白遍歷循環的循環體中對循環變量的重新賦值修改不會影響循環次數,不能把遍歷循環簡單處理為計數循環。
(二)“好”
這個“好”一方面體現在編排順序上,要循序漸進,不能把知識點簡單地堆砌起來。知識點集中呈現的課程對于編程零基礎的學生來說,是不適合的,就像把各種字、詞集中整理在一起的字典不能作為學生學習語文的教材。在案例中循序漸進地學習各知識點,是小學生學習編程的可行路徑。在解決問題的實踐中引出新知,適可而止,由淺入深,由易到難,不求概念化,逐步系統化,實現從以語法為核心的知識體系的編排轉向以解決問題為核心的能力體系的編排。
另一方面體現在編排內容上,要做到因材施教。Python語言是一種生態語言,生態語言關注的不是每個具體算法的邏輯功能和設計,而是盡可能利用第三方庫進行代碼復用,像搭積木一樣編寫程序,提高工作的效率。小學生可從算法的角度學習Python語言,注重基礎性,弱化應用性,關注思維活動。數據、算法、算力是人工智能的三大技術基礎。選擇算法作為學習內容,也符合時代發展的趨勢。那么,選擇怎樣的內容才算是從算法角度編排的呢?如累加求和,已知某一個數字列表中各個元素的值,求該列表中所有元素的和。從計算生態的角度出發,直接學習內置求和函數sum(" ")的調用方法,代碼簡潔,編程的效率高。從算法角度出發,應學習計算機高級語言累加求和的一般方法(先將累加器清零,再遍歷列表中的每一個元素,依次累加各個元素的值,最后輸出累加器的值)。雖然這種求和方法的代碼長,編程效率低,但能讓小學生明白累加的一般過程,學會思考。站在一般程序設計語言的視角選擇學習Python語言的內容時,既要關注Python語言個性化的內容,也要關注程序設計語言的共性知識,兩者有機結合,通盤考慮,適當地從語言細節上解放出來,才能更有利于學生的成長。
(三)“趣”
開發的課程要讓學生感到有趣。“趣”是有層次的。第一層次是精美的畫面,用圖吸引學生。對于低年級的學生來說,這個顯得特別重要。他們處于從形象思維過渡到抽象思維階段,圖對他們有吸引力,但學生的興趣不持久。對于小學高年級的學生來說,因學習而體驗成功的快樂、因學習而實現自我價值引發的興趣是最持久的、最可貴的,這便是第二層次的“趣”。因此,開發的課程一要有插圖,二要設計有梯度、有層次的問題,在解決問題的過程中利用自然語言、流程圖或偽代碼語言等方式,呈現解決問題的過程與步驟,讓思維活動可視化。同時,設計習題,促進學生學會觸類旁通,為學生體驗到編程的快樂、實現自我價值、保持學習的動力提供可能。
(四)“高”
編寫課程內容的指導思想要高。教師要跳出學科看問題,跳出技術看問題,要從人的發展、培養人的角度來考慮。從人的發展角度看,多數學生將來不會成為程序員或計算機科學家,因此,不能把編程看作一種狹隘的技術,而應把它當成一種解決問題的方法,培養學生分解、抽象、建模、設計算法的能力,并引導學生將這種能力遷移、應用到解決其他學習、生活中的問題中。從培養人的角度看,編程只是學習的載體,不是學習的目的,學習的目的是能讓學生在學習編程的過程中得到成長,訓練思維,培養學生的理解力、思考力、創造力,為學生的未來助力。因此,在開發課程時,應在科學的、發展的人才觀、成才觀、教育觀的視角下組織教學內容,讓編程成為一種素養。
一本基于小學生的Python語言校本課程,能夠幫助更多的學生學習有趣的編程,能夠讓更多一線信息科技教師少走彎路,這是一件很有意義的事。
【參考文獻】
[1]熊璋.“科”“技”并重:義務教育信息科技課程標準解讀:訪義教信息科技課標組組長熊璋教授[J].中國信息技術教育,2022(9).
[2]潘洪波.小學生Python趣味編程[M].北京:清華大學出版社,2024.