圖片來源:攝圖網(wǎng)
最近,少兒編程好像一夜之間成了一個比較火熱的概念,媒體上和朋友圈經(jīng)常能夠看到 “編程將會被引入高考”“孩子再不開始學(xué)習(xí)就會輸在起跑線上”“未來職業(yè)需要”之類的報(bào)道,以此作為應(yīng)該讓孩子學(xué)習(xí)編程的理由。作為一個在這個領(lǐng)域摸爬滾打了一段時間的人,我想從另外一個角度談?wù)勛约簩ι賰壕幊痰囊恍┱J(rèn)識。
少兒編程的起源
說起少兒編程,就不得不提到一個人,Logo語言之父、構(gòu)造主義(Constructionism)學(xué)習(xí)理論的提出者——西蒙·派珀特(Seymour Papert)教授。由于生活經(jīng)歷的因素,派珀特教授對齒輪特別感興趣。他提到,在自己的學(xué)習(xí)生涯中,經(jīng)常能夠?qū)⒁恍﹦e人認(rèn)為非常復(fù)雜的概念和“齒輪模型”結(jié)合起來,從而對這些知識理解的更加深刻,而且在玩齒輪的過程中,常常能夠不經(jīng)意地學(xué)到很多知識。
那么,這和少兒編程有什么關(guān)系呢?派珀特教授結(jié)合自己的學(xué)習(xí)經(jīng)歷想到,要是每一個孩子都能找到自己感興趣的“齒輪模型”,那學(xué)習(xí)將會變得非常主動而且高效。但是,并不是每個孩子都會喜歡齒輪,那有什么樣的一種工具能夠滿足每個孩子不同的興趣呢?答案是計(jì)算機(jī),通過編程的方式讓計(jì)算機(jī)去構(gòu)建孩子感興趣的事情,并在這個過程中不經(jīng)意地學(xué)到知識是很完美的一種方式。于是派珀特教授很自然的將自己發(fā)明的Logo語言應(yīng)用到了教育領(lǐng)域,讓孩子通過編程的方式使數(shù)學(xué)學(xué)習(xí)變得看得見、摸得著。后來麻省理工媒體實(shí)驗(yàn)室,又在派珀特教授的理論基礎(chǔ)上推出了新一代的編程語言——也就是現(xiàn)在非常流行的Scratch編程語言。
所以說,少兒編程其實(shí)并不是一個新鮮的事物,它是構(gòu)造主義學(xué)習(xí)理論的一種體現(xiàn),隨著技術(shù)的發(fā)展,這種體現(xiàn)形式會不斷的發(fā)生變化,比如從Logo發(fā)展到了Scratch,以后也許還會發(fā)生變化。但是它作為一種讓孩子更好學(xué)習(xí)的工具的本質(zhì)不會發(fā)生變化。
如果對于Scratch背后的學(xué)習(xí)理論感興趣,可以去看看派珀特教授的這些著作《Mindstorms: Children, Computers, and Powerful Ideas》、《The Children's Machine: Rethinking School in the Age of the Computer》、《The Connected Family: Bridging the Digital Generation Gap》。
對于編程學(xué)習(xí)的觀點(diǎn)
基于上面的討論,編程作為一種工具,是為了讓孩子找到一種適合自己的學(xué)習(xí)方式,最終的目的是讓每一個孩子能夠更加主動、高效的學(xué)習(xí)。所以任何脫離了這個目標(biāo)的編程教學(xué),或多或少都是有一些欠缺的。我覺得對待編程學(xué)習(xí),應(yīng)該有的態(tài)度是:
觀點(diǎn)1:編程教學(xué)最終的目標(biāo)應(yīng)該聚焦在如何通過編程的方式去幫助學(xué)生表達(dá)創(chuàng)意,而不是聚焦在教會學(xué)生編程的基本技巧。當(dāng)然,掌握這些編程的技巧是孩子在學(xué)習(xí)過程中不可逾越的一個階段。
這個觀點(diǎn)似乎有點(diǎn)老生常談,但我認(rèn)為從心里面真正理解這條教學(xué)目標(biāo)非常重要,因?yàn)檫@條“綱”指引著課程的設(shè)計(jì)方向。
為了達(dá)到這樣的教學(xué)目標(biāo),從教學(xué)設(shè)計(jì)的角度來看,我認(rèn)為應(yīng)該分成“學(xué)”和“啟”兩個階段。
“學(xué)”即編程基礎(chǔ)知識的學(xué)習(xí),這個階段最終的目標(biāo)是幫助孩子掌握編程的基本技巧。以Scratch的學(xué)習(xí)為例,一些小游戲的設(shè)計(jì)、Makey Makey音樂的創(chuàng)作、Minecraft的結(jié)合等等,大多數(shù)孩子都很感興趣,都可以納入進(jìn)來。但是比較重要的一點(diǎn),是讓孩子覺得“編程有意義”,所以孩子課本上學(xué)到的、生活中見到的現(xiàn)象是比較合適的主題,而且學(xué)習(xí)這樣的主題也更容易引起共鳴。
比如,將小學(xué)數(shù)學(xué)課上學(xué)到的加減乘除運(yùn)算融合到下面的賽跑游戲中,一方面數(shù)學(xué)知識有了實(shí)際的應(yīng)用場景,另一方面游戲的設(shè)計(jì)也能激發(fā)孩子的創(chuàng)作熱情。
再比如,在講解與坐標(biāo)相關(guān)的指令時,引入笛卡爾發(fā)明平面直角坐標(biāo)系的小故事,讓孩子知道創(chuàng)作一個蜘蛛結(jié)網(wǎng)的程序是有意義的。
另外,諸如Minecraft等游戲都是孩子比較喜歡的,與其單純地讓他們沉迷于這些游戲中,不如通過編程的方式對這些游戲進(jìn)行再創(chuàng)作,讓孩子覺得學(xué)習(xí)是與自己的生活息息相關(guān)的,從而增強(qiáng)對學(xué)習(xí)的興趣。
在完成“學(xué)”這個階段后,孩子已經(jīng)掌握了基本的編程技巧。還是以Scratch為例,到進(jìn)入下一個階段的學(xué)習(xí)時,根據(jù)我的觀察,常見的一種做法是給孩子尋找邏輯更加復(fù)雜的游戲,以此證明孩子還沒有完全掌握編程,或者直接過渡到另外一種編程語言。我的觀點(diǎn)是,如果局限在編程邏輯的復(fù)雜度上,那這樣的學(xué)習(xí)是沒有盡頭的,因?yàn)镾cratch能實(shí)現(xiàn)無限復(fù)雜的邏輯。而且這樣去設(shè)計(jì),會給孩子造成學(xué)習(xí)編程只能編寫游戲的錯覺,同時也減少了孩子主動應(yīng)用編程表達(dá)想法的機(jī)會。
所以,我認(rèn)為第二個階段更重要的在于“啟”,即以發(fā)布小專題或者項(xiàng)目的形式啟發(fā)學(xué)生主動的觀察現(xiàn)象、應(yīng)用編程。這個階段的學(xué)習(xí)成果包括其他知識的學(xué)習(xí)報(bào)告、程序的實(shí)現(xiàn)、改進(jìn)的方案等。
比如,“為什么有的玩具小車會自動沿著黑線行駛(循跡)”,針對這樣的項(xiàng)目,需要孩子對循跡的原理進(jìn)行探索,有的孩子就了解到了循跡傳感器的原理,原來是與光學(xué)上的反射現(xiàn)象有關(guān)。然后通過Scratch模擬出一個循跡小車的運(yùn)行效果。比如,下面的小車就可以沿著賽道自動的行駛,在不同顏色的賽道,小車的速度還不一樣??梢钥吹胶谏≤嚨淖钋懊嬗屑t色和綠色的兩個小方塊,這是孩子了解了循跡的原理后模擬的傳感器。
又比如,“Minecraft可以控制生活中的物體嗎?”孩子在完成這個項(xiàng)目時,需要思考之前學(xué)過編程可以控制Minecraft,之前也學(xué)過編程可以控制生活中的物體比如LED燈。那編程是否可以作為一個中介讓Minecraft控制LED燈呢?經(jīng)過嘗試以后,他們會發(fā)現(xiàn)原來不僅可以用Minecraft去控制LED燈,還可以控制很多其他的物體,而且利用一些傳感器還可以反過來控制Minecraft。那么,是否可以做成一個控制Minecraft小玩具呢?于是就有了下面從圖紙?jiān)O(shè)計(jì)、原型加工、程序設(shè)計(jì)到實(shí)際模型的成果。
“學(xué)”和“啟”,更重要的在于“啟”,正如派珀特教授指出,我們只需要為孩子營造出可以學(xué)習(xí)的環(huán)境,孩子總能在自己動手的過程中,不經(jīng)意的學(xué)到很多知識。
觀點(diǎn)2:課程體系的延伸源于孩子創(chuàng)意表達(dá)需求的延伸。
在編程教學(xué)過程中,經(jīng)常有家長問老師“孩子應(yīng)該從何學(xué)起”,得到的回答往往是:應(yīng)該從圖形化編程開始,然后過渡到代碼編程,最后學(xué)習(xí)算法。
我的理解是,既然編程是孩子創(chuàng)意表達(dá)的一種工具,那么很顯然對于不同年齡又或者是不同興趣的孩子來說,他們對周圍世界的認(rèn)知是不一樣的,需要表達(dá)的創(chuàng)意也就不一樣。有的孩子對世界的理解可能是天馬行空的想象,想到的就是合理的;有的孩子可能對真實(shí)世界已有的現(xiàn)象充滿了好奇,比如樓道里的燈天黑了為什么會自動亮;還有的孩子可能會想,我能不能讓這個世界更加便利。
從這個角度出發(fā),作為老師,選出合適的編程工具以滿足孩子上述需求似乎更加合理。而且為了符合孩子的認(rèn)知能力,這種編程工具應(yīng)該盡量簡單、不需要特別高的門檻,孩子能夠通過簡單的操作即可將自己的想法具象化?;诖?,Scratch、Arduino(S4A等)、APP Inventor等圖形化的編程工具都是比較合適的選擇。通過Scratch,孩子可以“零風(fēng)險(xiǎn)”的實(shí)現(xiàn)天馬行空的想法;通過Arduino編程項(xiàng)目,孩子對生活中常見的物理現(xiàn)象會有更加真實(shí)的認(rèn)識;而通過APP Inventor制作手機(jī)APP,絕對是孩子開發(fā)生活便利方案的好工具。從工具學(xué)習(xí)難易程度來說,Scratch、Arduino、APP Inventor難度依次遞進(jìn)。孩子選擇哪一種編程工具,一方面要根據(jù)興趣,另一方面也要考慮認(rèn)知能力。不過需要指出的是,不是從一種編程工具過渡到另一種編程工具,孩子的能力就會提升。上面提到的3種圖形化編程工具,要達(dá)到自如的表達(dá)創(chuàng)意都不容易,深入學(xué)習(xí)都是對計(jì)算思維的極大鍛煉。
當(dāng)然,對于一些理解能力強(qiáng)、學(xué)習(xí)快、對計(jì)算機(jī)特別感興趣的孩子來說,在小學(xué)階段嘗試代碼編程、學(xué)習(xí)算法、朝計(jì)算機(jī)專業(yè)發(fā)展也未嘗不可。
觀點(diǎn)3:老師的作用在于啟發(fā)、引導(dǎo)、鼓勵,不在于教。
編程學(xué)習(xí)是以學(xué)生為主導(dǎo)的學(xué)習(xí)過程,孩子的蛻變在于興趣驅(qū)動下的主動學(xué)習(xí),而不是老師教會。在我實(shí)際教學(xué)的過程中,經(jīng)常會發(fā)現(xiàn)孩子更加享受于自己摸索與創(chuàng)作。那么老師的價值何在?我認(rèn)為老師的作用恰恰就在于讓孩子“有意義的主動學(xué)習(xí)”。要實(shí)現(xiàn)這個目的,需要老師去塑造一種讓孩子主動學(xué)習(xí)的氛圍,拋出讓孩子感興趣的、貼近他們生活的話題,激發(fā)讓孩子利用編程去創(chuàng)作的興趣。
上述提到的蜘蛛結(jié)網(wǎng)、四則運(yùn)算、控制Minecraft等都是有效的嘗試。在此基礎(chǔ)上老師還需要幫助學(xué)生解決編程過程中的一些程序問題,也就是解惑,同時需要對學(xué)生的創(chuàng)作成果進(jìn)行反饋,鼓勵學(xué)生分享、進(jìn)一步的創(chuàng)作。
觀點(diǎn)4:為了更加方便的學(xué)習(xí),編程學(xué)習(xí)社區(qū)非常重要。
編程學(xué)習(xí)不應(yīng)該孤立的存在,分享與獲得反饋是孩子保持學(xué)習(xí)動力的很重要的因素。從我在學(xué)校教學(xué)的過程來看,一個基于編程的學(xué)習(xí)社區(qū)是非常重要的,一方面孩子可以非常方便地存儲自己的作品,另一方面同伴或者老師也可以利用這個系統(tǒng)及時地給予孩子反饋。事實(shí)上,很多情況,孩子的進(jìn)步來源于同伴之間的交流,而且作為互聯(lián)網(wǎng)時代的原住民,現(xiàn)在的孩子更習(xí)慣于這樣的學(xué)習(xí)方式,國外也有相應(yīng)的研究證明這一點(diǎn)。這也是Scratch官網(wǎng)社區(qū),看似沒有老師教,但學(xué)習(xí)其實(shí)無時無刻不在發(fā)生的原因。
觀點(diǎn)5:判斷孩子是否學(xué)會了編程,唯一標(biāo)準(zhǔn)是其是否愿意并能自如利用編程工具實(shí)現(xiàn)自己的想法。
很多情況下,會創(chuàng)作一個游戲,并不能代表孩子“學(xué)會”了如何應(yīng)用編程。也許換一種情形或者場景,孩子就不會應(yīng)用了。只有在不同的場景下,針對不同的問題,甚至是孩子自己提出問題,都能夠自如地應(yīng)用編程技巧實(shí)現(xiàn)想法,才是真正的學(xué)會了如何去學(xué)習(xí),這也是我所理解的編程學(xué)習(xí)的目的。而要達(dá)到這樣的目標(biāo)離不開合理的學(xué)習(xí)習(xí)慣的培養(yǎng),老師的作用就在于陪同孩子一起養(yǎng)成這樣的習(xí)慣。
兩天前,牛牛給我發(fā)了一個新創(chuàng)作的作品,還特地給我介紹了他創(chuàng)作這個作品的初衷,原來是他上個月參加了一個數(shù)學(xué)考試,里面有道數(shù)學(xué)題給了他靈感,于是他將這道數(shù)學(xué)題做成了一個Scratch小游戲,希望更多的小朋友能夠挑戰(zhàn)數(shù)學(xué)。下面是牛牛的作品,不僅為自己的作品設(shè)計(jì)了Logo,而且還詳細(xì)說明了游戲的規(guī)則。對于一個旁觀者來說,作品使用起來好像很簡單,但是對于創(chuàng)作者來說,一定是在完全理解了數(shù)學(xué)知識的基礎(chǔ)上,才能將這個小游戲的功能設(shè)計(jì)出來。更關(guān)鍵的是生活中任意一個小小的發(fā)現(xiàn),都有可能催生出一個創(chuàng)意的作品。
所以,不管牛牛的作品是否完美,能將一個抽象的數(shù)學(xué)題通過編程轉(zhuǎn)化為一個具象的小游戲作品,就是極大的成功。我想這不正是派珀特教授想要的學(xué)習(xí)方式嗎?學(xué)習(xí)編程,讓編程反哺學(xué)習(xí)(learn to code, code to learn)。
當(dāng)然,我也很高興看到一些學(xué)生參加編程或者創(chuàng)客類的比賽而得獎,這至少也是對他們學(xué)習(xí)能力的一種認(rèn)可與證明。
幾年之前,當(dāng)我追尋著派珀特教授的理念踏入少兒編程行業(yè)的時候,我就在想做教育一定要懷著一顆敬畏的心去做,我很高興自己始終堅(jiān)持初心。寫下這篇文章,希望能和大家一起交流、探索,把這件事做好。
注:本文來自讀者投稿,不代表芥末堆觀點(diǎn)。
2、芥末堆不接受通過公關(guān)費(fèi)、車馬費(fèi)等任何形式發(fā)布失實(shí)文章,只呈現(xiàn)有價值的內(nèi)容給讀者;
3、如果你也從事教育,并希望被芥末堆報(bào)道,請您 填寫信息告訴我們。