孩子學編程,作為教育者該如何選擇編程語言?

五嘎子 5年前發布 | 2K 次閱讀 編程

孩子學編程,作為教育者該如何選擇編程語言?

  本文來自微信公眾號: 芥末堆看教育(ID:jiemoedu),作者:少兒編程之家,編輯:吉吉

  我最常被老師和家長所問到的一些問題是:我應該選擇哪一種編程語言來教孩子編程呢?堅持選擇像 Scratch 這樣的圖形化編程語言作為開端很重要嗎?應該在什么年齡轉換到學習代碼編程呢?還有我應該如何在 Python,Java,還有 JavaScript 之間選擇呢?

  經過將近 10 年,對成百上千個學生教授編程,我經常出席各種會議,或為剛接觸計算機科學的老師舉辦講習班。許多老師都是第一次嘗試在他們學校里建立計算機科學課程,所以他們對于選擇編程語言的謹慎,是可以理解的。除了試圖找出最適合他們學生的東西外,教師講授的內容還必須在授課舒適度,以及校園、學生、家長四者之間取得平衡。

  那“合適”的編程語言,真的存在嗎?

  編程語言不是重點,編程中的概念才是!

  就像你猜的那樣,答案自然是否定的。編程語言不是重點,但教導孩子如何利用編程去解決問題才是重點。理解如何一步一步地建立算法,從而搞定作業,再想出最佳的思路來編寫代碼,這可能才是最困難的部分。

  學習相當少量的關鍵詞和特定編程語言的簡單語法很簡單——比學習一門真正的口語語言要容易得多!相比而言,為了獨立完成編程,必須了解編程中變量、列表、條件、循環,還有函數中的基本概念,然后才能知道何時,何地,如何使用它們將算法轉換為代碼。

  一個學生一旦掌握了以上這些概念,并且以一種語言編程成功,這時再用另一種語言來編程就不難了。轉換編程語言并非打個響指一樣容易,但確實可以做到。

  話說回來,掌握的第一種編程語言會改變將來思考和編程的方式嗎?學習當下行業里最流行的語言重要嗎?


2018 年美國熱門編程語言 Top10【圖源: YoungWonks】

  編程語言變化不定,你終將適應

  編程語言的流行度會變,沒有人敢保證我們今天教會孩子的東西,在他們進入職場的時候還適用。我學習的第一門編程語言是 Pascal(對,你可能得百度一下)。

  多年以來,我使用過不同的設備來學習不同的語言——其中不乏一些晦澀難懂的。在作為教育工作者的這 10 年里,我學習了 Logo,Scratch,Processing,JavaScript,Arduino 和 Python 的一大堆知識,好讓我能在課堂上大展拳腳。

  6 年前,我建議孩子們從學習 Logo 開始,一門最早應用于計算機科學教育當中的編程語言,而我相信,它就算放在今天,也依然是一個頗具影響力的選項。劃重點:如果你能教會孩子們基本的編程概念,他們也能在一門語言上花上足夠的時間,他們理論上就已具備了日后轉換語言的基本條件。

  這還有一條經常提到的問題:我們總是應該優先教會孩子圖形化編程,而非代碼編程嗎?

  圖形還是代碼?

  差不多 10 年前,在一節六年級數字設計課上,我開始使用 Scratch,一門也許是最流行也是對孩子最友好的圖形化編程語言。我隨后將這門編程語言拓展到所有年級。我對不久前剛發布的 Scratch 3.0 中新功能感到興奮——尤其是文字轉語音和文字翻譯這兩個拓展功能。

  圖形化編程的出現,極大減輕了青少年對編程的挫敗感,諸如漏掉一個逗號或者忘了把右括號補上之類,反而讓他們留有更多時間來理解當中的概念。另外,Scratch 對于創新的鼓勵以及在圖像創作、聲音編輯、分享和項目混制方面的功能優化,讓它在成為各年齡段孩子首選編程語言上變得理所當然。較之被稱為“編程語言”,它更希望被定位為一個繪圖工具,一個動畫制作工具,或是一個故事與游戲創作工具,這些元素綜合起來,讓 Scratch 變得更友好而不唬人。

  我發現在使用 Scratch 幾年后,學生更愿意去嘗試代碼編程,因為他們覺得那意味著長大,只有“真正的編程”才會被行業采納。我還見證過語言的轉換中,有時只需要給孩子們回顧一下例如變量和循環的概念。

  我的中學學生們愿意為學習代碼編程付出額外的努力,通常他們會放慢速度,以保證在處理 Python,JavaScript,Arduino 和 Processing 挑戰時不犯下拼寫和語法錯誤。不過,學生一旦能夠通過剛開始時“我得看著點有沒有打錯字”階段,他們常會愛上代碼編程的靈活性和可塑性,尤其是當他們發現復制、粘貼,協作和修改在代碼編程中有多方便時,偶會發出“也沒想象中那么糟嘛”類似的感慨。

  每年夏天,我在 Foothill College KCI 計算機科學合作課程上,都會分別用 Scratch 和 Python 兩種語言,為教師展示同一個項目。他們愛看把兩種語言放一起比較。我們甚至會以偽代碼,或者叫流程圖作為開始,把完整算法在開始編程前先寫下來。

  這是一個檢查密碼的迷你項目,它在流程圖,Scratch,和 Python 中,分別長這樣:

密碼檢查器流程圖

用 Scratch 展示的密碼檢查器

用 Python 展示的密碼檢查器

  我課堂中的老師和學生在沒接觸過圖形化編程的前提下,都能輕松學習 Python,這說明好項目在前,從代碼編程開始學習同樣行得通。

  是什么讓一門編程語言,變成適合孩子學習的編程語言?選擇一門語言的標準是什么?

  雖然知道教授編程,更多是關于它的概念,你也知道不需要再為作出完美的第一次選擇而慌亂,但問題依然沒有得到解答:什么因素讓一門編程語言成為孩子學習編程的好選擇呢?通常由以下幾點來衡量:速度,應用,可用的庫,行業支持。下面我再來說說我認為重要的幾個標準。

  它有強大的教育者社區嗎?

  我頻繁提到 Scratch 和 Python 的其中一個原因是他們都有附屬的線上教育者社區。他們擁有如此龐大社區,背后的原因是他們總是以免費的形式,開放的姿態,接納來自世界每個角落的用戶。擁有龐大的社區,意味著你能找到更多資源,諸如項目、教案、教程、視頻和書籍一系列為課堂而設的材料。

  學起來好上手嗎?

  有許多代碼式編程語言可供選擇,一些在當今的科技行業中更吃香,一些有特別的功能方便他們創造特定的項目。雖然說許多高中生最終不得不為通過計算機科學進階入學考試(AP Computer Science A)而學習 Java,但這一定不是最簡單的語言。Python 目前看起來更簡單,并且憑借著它簡潔直白的邏輯,在教育界中越來越受歡迎。在我將 Python 用作計算機科學選修課語言 3 年后,我依舊會被它完成工作的效率,以及中學生用它編寫代碼的速度所震驚。受到 Python 在教育孩子編程方面的啟發,我花時間寫了一本關于它的書。

  它背后的設計理念是什么?它是為這個年齡段的用戶所設計的嗎?

  為用戶設計適合其年齡的工具很重要,編程語言可以根據它不同年齡段的用戶展示或者隱藏相應的功能。Scratch,扎根在培養孩子的創造力表達上,刻意將一些功能性代碼以封裝的形式呈現出來。ScratchJr. 是為還在識字的孩子而設計的,所以它沒有變量和條件這些對這個年齡段孩子來說太難理解的功能。Python 為不同類型的項目提供擴展支持,但這些額外的擴展都需要你親手把它們添加進來,這樣它們就不會在你不需要的時候出來干擾視線。為更大的學生所用語言一定要含括對 debugging 的支持,基本操作了。如果講授“面向對象”編程是重點環節,那使用 Java 教學就是一個好選擇。

  容易安裝嗎?能跨平臺運行嗎?

  這些都是要記在心里的東西,尤其當學生需要回家編程時顯得更為重要。一些語言只能在特定環境中工作,譬如 Apple 的 Swift 編程語言。如果學生在 Chromebook 上編程,那么有一個穩定的,基于瀏覽器的工具就更加關鍵。需要考慮的另一個問題:這個語言能讓學生回到家中也免費使用嗎?還是有一些隱藏的擴展需要付費方才解鎖?

  能否輕松地在社區中分享項目?

  Scratch 背后其中一個基本元素就是社區,讓孩子們互相分享,相互學習。這個社區對教師們來說也同樣重要。不過,分享也要有計劃:何時分享,允許學生分享多少內容,評論和修改他人的作品等。也許把 JavaScript 作為第一門代碼式編程語言進行學習會讓你大皺眉頭,雖在易用性和上手難度上都不如 Python,但它的優勢在于它是屬于網絡的腳本語言,只要把項目發布到校園網服務器上就能展示給大家看,方便又快捷。

撐起 Scratch 的一個重要基本元素——社區

  選擇編程語言時要考慮的方面還有很多。這個項目能用到什么語言?不同的語言可能支持不同類型的項目。舉例來說,Processing 和 P5.js 讓制作動畫變得更輕松;Python 把復雜的數據分析甚至是機器學習變為可能。老師們也可能更傾向一個強大的課堂工具,便于管理作業和批改成績,尤其對小組項目而言。

  一個最經常被問到的問題是:“這門編程語言現在流行嗎?”流行度對于學生選擇學習一門編程語言來說有很深影響,也不難理解家長希望孩子能掌握對未來職業有利的技能那種心情。無論如何,教授良好的編程習慣勝過教授流行編程語言。

  雖然我們可以強調要找到“完美”的編程語言,但我們不要忘記,最終的目標是讓學生探索基本的編程概念。他們或許在你的課后就不再插手編程,你教的語言在他們長大后也可能變得過時,重要的是,教授編程將會幫助學生理解計算機是如何解決問題,收獲批判性思維技能,并希望他們有朝一日洞察到,用代碼創造東西的樂趣。

 本文由用戶 五嘎子 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
  轉載自:https://mp.weixin.qq.com/s?__biz=MzA4MzI5MDAyNg==&mid=2651210147&idx=4&sn=c6f51050d96bfdd1fd5d8893e3736b68&scene=0&xtrack=1#rd