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