兒童程式語言的進化史

chowchowT^T發表於2016-05-28

奧巴馬“計算機從娃娃抓起”的倡議和人們對科學(Science)、技術(Technology)、工程(Engineering)、數學(Mathematics)教育日漸增長的關注都說明了一個問題,那就是,為了教導孩子們學習計算機知識,我們需要建立一套標準,還要找到好的教學方案。在工業界,人們普遍認為,要讓孩子學會些什麼,最好的方法就是使用視覺化的程式語言,這樣的話,即使是年紀很小的孩子也不必糾結於語法問題,而可以自由創造,同時掌控著自己編寫的軟體。

Logo 語言的更新換代

在過去 50 年裡,設計師們以 Seymour Papert 創造的 Logo 語言為基礎,造出了一大堆程式設計工具,它們雖然在介面上稍有不同,但其目的都是為了引導孩子們對程式設計進行思考。同時,由於 MIT 設計的 Scratch 的流行,基於模組的程式設計方法便成為了教學的標準。 在 CSTA 為中小學生制定的計算機課程教學標準中,也明確地將“在基於模組的視覺化程式語言上進行構建和測試的能力”用於評估小學 5 年級學生的程式設計水平。
兒童程式語言的進化史

趨向幼齡化

 

引入機器人技術

看著自己寫的程式碼變成現實是件很神奇的事。在本世紀初,樂高 和 MIT 合作了一個專案,致力於將基於模組的程式設計帶入到現實世界中。學生可以在電腦上寫程式,然後把程式碼下載到他們搭建的機器人上。早期的 RIS (機器人發明系統)和 Scratch 十分相似。
兒童程式語言的進化史
2013 年推出的樂高機器人雖然變得更加複雜,但工作原理仍然不變。現在學生們能夠給元件增加輸入引數,用來指定距離、時間、輸出和其它的一些特性。
兒童程式語言的進化史
Martin Exner 在 Logo 和更晚一些的 Scratch 的啟發之下,發明了這種簡單的資訊圖,它被用來描述視覺化的程式設計工具。
事實上,Logo 語言的大部分衍生產品都是為了特定的場景而被設計出來的:用於遊戲、建立 3D 場景、畫圖、對機器人進行程式設計甚至是用來操縱一個虛擬的魚缸。
但即使這些東西能夠吸引許多不同的孩子,很多小孩在之後學著編寫語句時仍會覺得很難。

超越 Logo

在現實世界裡,計算機程式總是需要考慮一大堆的輸入,以及一個邏輯條件是否成立。舉一個例子,我們要決定今天需不需要早起。如果今天是星期六或者星期天,那麼我們就會出去外面玩。如果今天是星期一,我們就得去收拾運動服。如果是星期四,就得倒垃圾。另外除了週末之後的日子,都要上學。下面這幅圖展示瞭如何使用 Scratch 對這個問題進行解答。
兒童程式語言的進化史

除了基於模組的程式設計方法之外,還有一種新的語言採用了不同的方法來教孩子程式設計。在 2015 年,Wonder Workshop 設計了一種流式的程式語言,叫做 Wonder。Wonder 讓學生將注意力放在多個功能單元之間的連線,通過這種方法來創造一個狀態機。這個狀態機在任意時刻都只能處於一個狀態,如果它正在處理某個任務,給定一個輸入就可以讓它改變狀態去做一些其它的事情。
下面這幅圖說明了如何使用流式的方法解決之前的起床問題。
兒童程式語言的進化史

除了使學生們擺脫了線性的程式設計正規化,Wonder 還讓他們能以一種簡單的方法來對現實世界的問題建立模型。

學生們可以更容易地把一個問題分解成小的模組,然後用這些模組來解決一個複雜的問題。這樣他們在解決一個複雜的問題的時候,就能把注意力放在在一個個子問題上。這個分解問題的過程,既是電腦科學的基礎知識,也是 Wonder 語言的設計初衷。

兒童程式語言的進化史

在我們日常生活裡也有很多機器人和狀態機的例子,並且它們正在變得越來越普遍。自動售貨機會在你投入正確的金額時吐出商品。自動駕駛汽車能夠根據周圍的障礙物決定如何前進。狀態機還能對很多其他的問題進行建模,就像句法分析、人工智慧、通訊協議、遊戲中的角色發展,甚至包括神經系統。

隨著機器人技術的應用和其影響力的擴大,教師們自己現在也需要學習模組化程式設計。但在這些方法被越來越多人採用的同時,我們應該思考的是:這是否就是正確的前進方向?又或者是不是還有其它更好的方法可以幫助孩子們學習計算機呢?

相關文章