淺談兒童編程教育

上周和一位語文教學(xué)大師一邊賞景、一邊閑聊,聊著聊著聊到了編程教育話題,突然勾起了三十年前的記憶,回家翻箱倒柜,翻出了當(dāng)時(shí)幾個(gè)人一起合寫的兒童編程教材。沒想到教育也和衣著時(shí)尚一樣,隔一段時(shí)間便要將過去的流行重新拿回來,再創(chuàng)造一次復(fù)古的流行。

30年前寫的兒童編程教材

現(xiàn)今的編程教育流行風(fēng)是2010年奧巴馬總統(tǒng)將科學(xué)、科技、工程與數(shù)學(xué)等STEM教育,定調(diào)為美國基礎(chǔ)教育的發(fā)展方向之后開始盛行起來。但其實(shí)早在半個(gè)世紀(jì)前,美國麻省理工學(xué)院(MIT)人工智能實(shí)驗(yàn)室共同創(chuàng)辦人西摩爾?派普特(Seymour Papert)教授(2016年以88歲高齡去世)就已鼓吹,應(yīng)該讓每一個(gè)孩子都學(xué)習(xí)編程,他并帶領(lǐng)團(tuán)隊(duì)在1968年以人工智能程序語言LISP為基礎(chǔ),開發(fā)出世界上第一個(gè)兒童專用編程語言Logo。

早期的Logo編程界面

派普特在1985年接受紐約時(shí)報(bào)專訪時(shí)曾說:「Logo是一個(gè)編程語言,它讓計(jì)算機(jī)照著你希望它怎么做的方式去完成工作。」他認(rèn)為「使計(jì)算機(jī)做事,需要在一定程度上描述基本的流程,并具有足夠的精度來由機(jī)器執(zhí)行。」因此在個(gè)人計(jì)算機(jī)上學(xué)習(xí)Logo編程,「給了孩童探索計(jì)算機(jī)潛能的機(jī)會,并讓他們能夠精熟地操控它。」

半世紀(jì)以來,Logo所帶動的兒童編程創(chuàng)新研發(fā)從來沒有停過,除了下指令式的各種版本Logo之外,近幾年大受歡迎的Scratch也是MIT基于Logo所開發(fā)的高親和性且功能更多的兒童編程語言;LEGO TC Logo則是玩具商樂高結(jié)合Logo編程所推出的可操控性積木玩具組,后來進(jìn)化為可編程機(jī)器人玩具M(jìn)indstorms(這個(gè)游戲商品是樂高玩具以派普特1980年的大作Mindstorms: Children, Computers and Powerful Ideas命名)。

既然兒童編程是STEM教育的核心,Logo做為最早的兒童專用編程語言,其開發(fā)者派普特曾與皮亞杰共事,自然深受皮亞杰認(rèn)知發(fā)展論(請參閱「融合反饋系統(tǒng)的發(fā)現(xiàn)式學(xué)習(xí)法」一文)的影響而成為一名建構(gòu)主義者。針對兒童學(xué)習(xí)編程,他曾說:「孩童在計(jì)算機(jī)上編寫程序時(shí),不僅可以獲得精熟最新與最強(qiáng)大科技的感受,還能與某些來自科學(xué)、數(shù)學(xué)及智力模式建構(gòu)的最深層意識建立親密的接觸。」由此不難看出,透過編程兒童能夠在訊息的產(chǎn)出、核對與處理過程中,組織與適應(yīng)自己的認(rèn)知結(jié)構(gòu)。實(shí)施兒童編程教學(xué)是基于項(xiàng)目式學(xué)習(xí)法(Project-based Learning),讓學(xué)生設(shè)定與建立項(xiàng)目,并在完成項(xiàng)目的過程中,鍛煉邏輯思維能力及培養(yǎng)問題解決能力。

我們就以Logo為例來看看兒童編程在學(xué)些什么,建議有興趣的人可以去下載FMSLogo一起跟著做做看。

1. 角色扮演,融入情境

Logo又被稱為海龜語言(turtle language),因?yàn)樗闹鹘鞘且恢恍『}敚瑑和趯W(xué)習(xí)編程時(shí)就是扮演小海龜?shù)慕巧?dāng)他想前進(jìn)100步時(shí),只需要下指令Forward 100(也可以簡寫為FD 100),就會看到海龜前進(jìn)100;而當(dāng)他想向右轉(zhuǎn)90度時(shí),則下指令Right 90(也可以簡寫為RT 90)。在初期學(xué)習(xí)階段,教師甚至可以不需使用計(jì)算機(jī),仍然能夠進(jìn)行編程教學(xué)(有人稱為”不插電的編程教學(xué)”),透過讓兒童融入故事情境,并以日常使用的單字和詞組來指揮主角,大幅降低學(xué)習(xí)的難度。

2. 實(shí)時(shí)獲知學(xué)習(xí)結(jié)果

兒童幾乎在學(xué)習(xí)任何學(xué)科知識時(shí),大多要在一段時(shí)間之后,透過測驗(yàn)、作業(yè)、練習(xí)或發(fā)表等方式,以分?jǐn)?shù)或作品來得知學(xué)習(xí)的成果。而計(jì)算機(jī)最大特性就是人和機(jī)器間的高互動性,只要對計(jì)算機(jī)下指令(command),立刻就能在畫面上看到執(zhí)行結(jié)果。例如執(zhí)行4次Forward 100和Right 90指令,就會看到屏幕上畫出一個(gè)邊長100的正方形。經(jīng)由畫面的立即回饋,馬上就能知道自己的學(xué)習(xí)正確與否。

計(jì)算機(jī)可立即顯示指令執(zhí)行結(jié)果

3. 規(guī)劃與執(zhí)行一個(gè)項(xiàng)目

項(xiàng)目(project)的產(chǎn)生可以是老師指定,也可以由學(xué)生自己發(fā)想。有了項(xiàng)目之后,學(xué)生必須構(gòu)思完成它的方法,并且需要將它拆解為一個(gè)個(gè)基本的可執(zhí)行單位,這些可執(zhí)行單位就像積木塊一樣,經(jīng)過適當(dāng)組合就能產(chǎn)出想要的結(jié)果。例如想要畫出下面這個(gè)由正方形組成的花朵(當(dāng)然正式項(xiàng)目可能要遠(yuǎn)比這個(gè)例子復(fù)雜多了,在此為了便于說明,采用比較簡單的范例),看起來相當(dāng)復(fù)雜,要完成它有不同的解決方法,但仔細(xì)分析后會發(fā)現(xiàn),它可以是由12個(gè)正方形組成,每畫完一個(gè)正方形就轉(zhuǎn)30度,再畫下一個(gè)。至于為什么要轉(zhuǎn)30度再畫,這便牽涉到數(shù)學(xué),因?yàn)閳D中有12個(gè)角,表示有12個(gè)正方形,而轉(zhuǎn)一圈是360度,兩者相除就得到30。所以基于前面畫出正方形的經(jīng)驗(yàn),只要每次畫完一個(gè)正方形之后讓小海龜轉(zhuǎn)30度,再接著畫下一個(gè),連續(xù)做12次就能得到正確的結(jié)果。

連續(xù)做12次的畫1個(gè)正方形后轉(zhuǎn)30度就可以得到這個(gè)圖形

但是想想每畫一個(gè)正方形需要4次的[Forward 100 Right 90],一共有12個(gè)正方形,表示需要有48個(gè)[Forward 100 Right 90]才能完成圖形,太麻煩了!我們可以試著把正方形變成一個(gè)積木塊,讓它像指令一般能夠直接使用,這就要讓Logo認(rèn)識”新指令”,也就是要建立自己的程序(procedure)。在Logo建立新指令時(shí)要使用TO...END來命名和定義指令內(nèi)容,以后就可以直接使用這個(gè)Logo學(xué)會的新指令。

To SQUARE
Repeat 4 [Forward 100 Right 90]
END

SQUARE這個(gè)新指令是讓Logo重復(fù)(Repeat)4次向前100再右轉(zhuǎn)90度,這樣可以畫出一個(gè)邊長100的正方形。因此要畫出這個(gè)由正方形組合而成的花朵就變得非常簡單,只要每畫完1個(gè)正方形后轉(zhuǎn)30度,重復(fù)12次即可,指令變成:

Repeat 12 [SQUARE Right 30]

執(zhí)行后果然得到預(yù)期的圖案。

定義新指令后可以直接使用

當(dāng)Logo學(xué)會新指令后,未來的編程都可以直接使用這些指令,例如稍微修改上面的程序,只重復(fù)4次,但每次轉(zhuǎn)90度角,可以畫出一個(gè)「田」字,程序就像下面這樣:

Repeat 4 [SQUARE Right 90]

規(guī)劃與執(zhí)行項(xiàng)目時(shí)可以訓(xùn)練學(xué)生找出項(xiàng)目中的特定模式(pattern),以及分割大項(xiàng)目成為一個(gè)個(gè)較小的工作,執(zhí)行時(shí)再分別解決每一個(gè)模式或是小的工作,最后完成整個(gè)項(xiàng)目。例如上面例子中,畫出這個(gè)花朵的最基礎(chǔ)模式是一個(gè)正方形。

在碰到較大型項(xiàng)目的時(shí)候,可以畫流程圖(flow chart)來表示項(xiàng)目執(zhí)行的完整過程,流程圖中除了線性的順序之外,也可能需要進(jìn)行條件判斷,例如「當(dāng)距離抵達(dá)目的地時(shí)間少于6小時(shí),搭高鐵前往,否則搭巴士」,這就是一種條件判斷。加入條件判斷的程序就不再是死板板的一條線直直走下去,而是會有一些變化的可能性,讓程序看起來有一點(diǎn)點(diǎn)”聰明”,能視情況調(diào)整。

4. 問題解決

編程時(shí)難免會碰到執(zhí)行結(jié)果和預(yù)期不同的情形,編程發(fā)生錯(cuò)誤被稱為程序中有臭蟲(bug),必須進(jìn)行除蟲(debug)工作,這可以培養(yǎng)學(xué)生問題解決的能力。例如想要畫出一根旗桿上有一面旗子,但下面這段程序卻畫出一個(gè)梯子!

Forward 50
Right 90
Forward 50
Left 90
Forward 50
Right 90
Forward 50
Left 90
Forward 50


本來想畫右邊的旗子卻畫成了左邊的梯子

找得到臭蟲在哪里嗎?原來蟲子躲在程序的第6行,轉(zhuǎn)錯(cuò)方向了!只要把右轉(zhuǎn)Right改成左轉(zhuǎn)Left,畫出來就是一面旗子了。

解決問題總是無法一步到位,常需經(jīng)過不斷測試與修改的過程,也正因?yàn)檫@樣的特性,使學(xué)生可以透過編程來提升自己,擁有更好的問題解決能力。

綜合來說,編程教育是希望培養(yǎng)學(xué)生擁有運(yùn)算思維(computational thinking)。運(yùn)算思維并不是讓人像計(jì)算機(jī)一樣的”思考”,而是透過分解復(fù)雜問題、辨識與發(fā)現(xiàn)模式、將模式一般化,以及發(fā)展問題解決流程等一系列工作,達(dá)到養(yǎng)成學(xué)生高階思維以解決問題能力的目標(biāo)。至于教育政策上是不是應(yīng)該像芬蘭、愛沙尼亞、英國等許多歐洲國家一樣,將編程納入正式課程,主要牽涉到師資是否充足的問題,擔(dān)任這方面課程的教師本身必須也有相當(dāng)好的運(yùn)算思維,以及編程的專業(yè)背景,但答案顯然再清楚不過了!



注:若有興趣使用Logo但不想記憶指令,也可以發(fā)郵件到contact@turtleart.org,索取新版的TurtleArt軟件,它是正宗派普特所開發(fā)的Logo編程環(huán)境,由派普特的子女(Artemis and Brian Papert)管理。TurtleArt采用鼠標(biāo)拖拉指令的方式撰寫Logo程序,而且畫面上真的有一只小海龜喔。

TurtleArt以拖拉指令方式來撰寫Logo程序
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 臺灣有一所大學(xué)定義了學(xué)生在校四年學(xué)習(xí),畢業(yè)前必須具備三種”語言”能力,包括中文、英文和程序設(shè)計(jì)語言,這自然是呼應(yīng)現(xiàn)...
    王者之聲閱讀 562評論 0 4
  • 1 當(dāng)我在大周末的早上,不在家睡懶覺,而是苦...
    Super__Frank閱讀 451評論 0 3
  • 1.ForkJoin框架:用來支持對每個(gè)內(nèi)核使用一個(gè)線程,完成計(jì)算密集型任務(wù),如圖像視屏處理。 實(shí)現(xiàn):擴(kuò)展Recu...
    TYcom閱讀 119評論 0 0
  • 女盆友上周來家里吃飯,看我的桌子堆滿了東西,就淘了個(gè)伸縮書架給我,組裝完的時(shí)候被那小玩意驚喜到了——整潔美觀層次分...
    我是Molly木有花閱讀 984評論 0 3
  • 夏天還沒來得及好好過,突然秋涼了 內(nèi)心充滿惶恐不安 是時(shí)間太快?還是我腳步太慢? 還沒有好好愛你,你就走了 是我沒...
    欣欣棒棒糖閱讀 403評論 0 1