少兒編程 > 文章資訊 > 少兒編程 > 科普!少兒編程語言的進(jìn)化史
科普!少兒編程語言的進(jìn)化史
童程童美 2016-08-16
奧巴馬“計算機(jī)從娃娃抓起”的倡議和人們對科學(xué)(Science)、技術(shù)(Technology)、工程(Engineering)、數(shù)學(xué) (Mathematics)教育日漸增長的關(guān)注都說明了一個問題,那就是,為了教導(dǎo)孩子們學(xué)習(xí)計算機(jī)知識,我們需要建立一套標(biāo)準(zhǔn),還要找到好的教學(xué)方案。
摘要奧巴馬“計算機(jī)從娃娃抓起”的倡議和人們對科學(xué)(Science)、技術(shù)(Technology)、工程(Engineering)、數(shù)學(xué) (Mathematics)教育日漸增長的關(guān)注都說明了一個問題,那就是,為了教導(dǎo)孩子們學(xué)習(xí)計算機(jī)知識,我們需要建立一套標(biāo)準(zhǔn),還要找到好的教學(xué)方案。 在工業(yè)界,人們普遍認(rèn)為,要讓孩子學(xué)會些什么,最好的方法就是使用可視化的編程語言,這樣的話,即使是年紀(jì)很小的孩子也不必糾結(jié)于語法問題,而可以自由創(chuàng)造,同時掌控著自己編寫的軟件。
Logo 語言的更新?lián)Q代
在過去 50 年里,設(shè)計師們以 Seymour Papert 創(chuàng)造的 Logo 語言為基礎(chǔ),造出了一大堆編程工具,它們雖然在界面上稍有不同,但其目的都是為了引導(dǎo)孩子們對編程進(jìn)行思考。同時,由于 MIT 設(shè)計的 Scratch 的流行,基于模塊的編程方法便成為了教學(xué)的標(biāo)準(zhǔn)。 在 CSTA 為中小學(xué)生制定的計算機(jī)課程教學(xué)標(biāo)準(zhǔn)中,也明確地將“在基于模塊的可視化編程語言上進(jìn)行構(gòu)建和測試的能力”用于評估小學(xué) 5 年級學(xué)生的編程水平。
趨向幼齡化 引入機(jī)器人技術(shù)
看著自己寫的代碼變成現(xiàn)實是件很神奇的事。在本世紀(jì)初,樂高和MIT合作了一個項目,致力于將基于模塊的編程帶入到現(xiàn)實世界中。學(xué)生可以在電腦上寫程序,然后把代碼下載到他們搭建的機(jī)器人上。早期的 RIS (機(jī)器人發(fā)明系統(tǒng))和 Scratch 十分相似。
2013 年推出的樂高機(jī)器人雖然變得更加復(fù)雜,但工作原理仍然不變。現(xiàn)在學(xué)生們能夠給組件增加輸入?yún)?shù),用來指定距離、時間、輸出和其它的一些特性。
Martin Exner 在 Logo和更晚一些的 Scratch 的啟發(fā)之下,發(fā)明了這種簡單的信息圖,它被用來描述可視化的編程工具。
事實上,Logo 語言的大部分衍生產(chǎn)品都是為了特定的場景而被設(shè)計出來的:用于游戲、創(chuàng)建 3D 場景、畫圖、對機(jī)器人進(jìn)行編程甚至是用來操縱一個虛擬的魚缸。
但即使這些東西能夠吸引許多不同的孩子,很多小孩在之后學(xué)著編寫語句時仍會覺得很難。
超越 Logo
在現(xiàn)實世界里,計算機(jī)程序總是需要考慮一大堆的輸入,以及一個邏輯條件是否成立。舉一個例子,我們要決定今天需不需要早起。如果今天是星期六或者星 期天,那么我們就會出去外面玩。如果今天是星期一,我們就得去收拾運動服。如果是星期四,就得倒垃圾。另外除了周末之后的日子,都要上學(xué)。下面這幅圖展示 了如何使用 Scratch 對這個問題進(jìn)行解答。
除了基于模塊的編程方法之外,還有一種新的語言采用了不同的方法來教孩子編程。在2015年,Wonder Workshop設(shè)計了一種流式的編程語言,叫做 Wonder。Wonder 讓學(xué)生將注意力放在多個功能單元之間的連接,通過這種方法來創(chuàng)造一個狀態(tài)機(jī)。這個狀態(tài)機(jī)在任意時刻都只能處于一個狀態(tài),如果它正在處理某個任務(wù),給定一個輸入就可以讓它改變狀態(tài)去做一些其它的事情。
下面這幅圖說明了如何使用流式的方法解決之前的問題。
除了使學(xué)生們擺脫了線性的編程范式,Wonder 還讓他們能以一種簡單的方法來對現(xiàn)實世界的問題建立模型。
學(xué)生們可以更容易地把一個問題分解成小的模塊,然后用這些模塊來解決一個復(fù)雜的問題。這樣他們在解決一個復(fù)雜的問題的時候,就能把注意力放在在一個個子問題上。這個分解問題的過程,既是計算機(jī)科學(xué)的基礎(chǔ)知識,也是Wonder語言的設(shè)計初衷。
在我們?nèi)粘I罾镆灿泻芏鄼C(jī)器人和狀態(tài)機(jī)的例子,并且它們正在變得越來越普遍。自動售貨機(jī)會在你投入正確的金額時吐出商品。自動駕駛汽車能夠根據(jù)周 圍的障礙物決定如何前進(jìn)。狀態(tài)機(jī)還能對很多其他的問題進(jìn)行建模,就像句法分析、人工智能、通信協(xié)議、游戲中的角色發(fā)展,甚至包括神經(jīng)系統(tǒng)。
隨著機(jī)器人技術(shù)的應(yīng)用和其影響力的擴(kuò)大,教師們自己現(xiàn)在也需要學(xué)習(xí)模塊化編程。但在這些方法被越來越多人采用的同時,我們應(yīng)該思考的是:這是否就是正確的前進(jìn)方向?又或者是不是還有其它更好的方法可以幫助孩子們學(xué)習(xí)計算機(jī)呢?