兒童編程語言進化史
改進中的 Logo 語言
在過去的五十年,設計師們不斷改進 Seymour Papert 創造的 Logo 編程語言(LCTT 譯註:應該有同學見過那個「小烏龜」),出現了一大批界面稍有不同而核心思想相同的編程語言。當前的教學標準是基於 模塊 的編程方式,這要歸功於 MIT 的 Scratch 編程語言的流行。在 CSTA 的 K-12 計算機科學教學標準中,對於 K-5 年級,要求達到「使用基於模塊的可視編程語言來構建和測試解決方案」的編程能力。
越來越年輕化
計算機科學教育的另外一個趨勢是受眾越來越年輕。研究表明,才僅僅五歲的孩子就能夠掌握計算機編程的概念,所以這是必然的趨勢。要教還不認識字的孩子們學習編程,就需要避免使用文字。最近像 Scratch Jr 和 Code.org 的第一階段課程就在基於模塊的編程語言中使用圖標替代了文字。
機器人編程
看見你的代碼出現在生活中是一件神奇的事情。早在本世紀初,樂高和 MIT 就合作了一個項目,將基於模塊的編程帶到了現實世界。學生們可以在計算機上寫程序,然後將其下載到他們搭建的機器人里。早期的 RIS( 機器人創造系統 )看起來十分像 Scratch。
在 樂高機器人 2013 版The 2013 中雖然變得更加複雜,但是其大部分所做的事情同之前的版本一樣。現在可以給模塊增加輸入參數,以指定距離、時間、輸出等等。
Martin Exner 創建了一幅簡明的信息圖,概括了由 Logo 以及更近一些的 Scratch 衍生而來的這些編程語言。許多 Logo 語言的衍生語言都是圍繞著特定場景的,比如創建遊戲、製作 3D 故事情節環境、繪製圖片、機器人編程,甚至可以控制虛擬魚缸。這種方式吸引了許多不同的孩子們,但是許多孩子在學習編寫一段程序仍然感覺有些困難。
Logo 之上的編程思想
在現實生活中,計算機編程通常需要考慮各種類型的輸入,並且同時還要動態處理各種邏輯判斷。讓我們舉一個判斷起床後要做什麼的簡單例子:如果是周六日,我們會去外面玩;如果是周一,我們需要穿上運動服;如果是周四,我們需要倒垃圾;而不是周末的日子,我們需要去上學。下面展示了用 Scratch 實現的邏輯。
除了這些基於模塊的編程語言,還有一種新的語言採用了不同的方式來教孩子們編程。2015年,Wonder Workshop 設計一個名為 Wonder 的新編程語言,採用的是基於流的編程界面。Wonder 可以讓學生們將注意力放在一些預先定義好的功能單元(或語句)的連接上,來構建一個 狀態機 。在任何時刻,機器人都是一個單一的給定狀態;它會做一些操作,給一些輸入就會讓它改為做不同的操作。
下圖展示了如何使用基於流的方式來判斷起床後的任務。
除了擺脫了線性編程範式,這種編程語言還提供了一種不同的計算思想,可以讓學生們以一種容易掌握的方式來模擬響應現實中的變化。學生們可以更容易的把問題分解成小的部分,然後用這些部分來解決複雜的問題。學生們在解決問題時只需要一次關注一個問題。這個過程稱之為分解,則既是計算機領域的基礎知識,也是 Wonder 的設計目的。
在我們的每天的生活中有很多機器人和狀態機的例子,而且它們變得越來越常見了。當你投入了正確組合的錢幣之後,自動售貨機就給你對應的食物。自動駕駛汽車會根據它周圍的障礙物來決定該怎麼移動。狀態機也可以進一步對大量問題進行建模,包括語言解析、人工智慧、通訊協議、遊戲中的角色變化,甚至神經網路。
隨著機器人應用的越來越廣泛,教師們正在接受培訓,把基於模塊的編程作為教授孩子們計算機科學的標準。隨著它進入到越來越多的課堂,我們應該思考這是否是一個正確的方向?還有沒有其他更好教授孩子們計算機編程的方法。
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive