資訊內(nèi)容
被神話以及被低估的 Scratch
人們提少兒編程,多半會(huì)想到 Scratch。有人說 Scratch 太重要,孩子要應(yīng)對未來世界必須得會(huì)編程,而學(xué)編程的最好方式就是 Scratch。也有人說 Scratch 不過是個(gè)入門的玩具,只要孩子能懂,還是應(yīng)該盡早教 Python、JavaScript、C++ 之類的正經(jīng)語言。
上個(gè)月《少兒編程教育的是與非》一文發(fā)出后,我陸續(xù)收到一些伙伴提問,問如何看待上面兩種觀點(diǎn)。我覺得吧,Scratch 被神話了,并且它也被低估了。神話它和低估它的,還常常是同一群人。
一、被神化的 Scratch
神話 Scratch 的說詞通常出現(xiàn)在制造焦慮的軟文里,我猜大家早看膩了。無非是搬出比爾蓋茨或喬布斯來證明從小學(xué)編程有多重要,再找些看起來已經(jīng)擁有開掛人生的編程少年讓你羨慕一下,最后告訴你 Scratch 有多簡單、孩子有多愛它。似乎有了 Scratch,你的孩子也能像開掛少年或世界首富一般,笑對未來被機(jī)器人統(tǒng)治的世界。
但,真是如此嗎?
會(huì)寫 if...else... 又如何?
首先,這類軟文中所謂的“編程思維”真沒什么了不起。不就是把“如果...那么...否則...”、“不斷重復(fù)...直到...”改成了 if...then...else... 和 repeat...until... 這樣幾個(gè)橘黃色小方塊嘛,憑什么換了個(gè)語言就成為高人一等的“編程思維”了?我還能把它翻譯成上百種語言呢,有差別嗎?
事實(shí)上,它的關(guān)鍵在于精確、無歧義的表達(dá),這是計(jì)算機(jī)語言不同于人類自然語言的一大特點(diǎn)。若孩子們雖然用一層層嵌套的 if...else... 寫代碼、邏輯卻混亂不清只是湊巧能正確運(yùn)行,那還是沒捕捉到計(jì)算機(jī)語言的好。若孩子們用中文的表達(dá)都如法律文書一般嚴(yán)謹(jǐn),給自己設(shè)計(jì)的桌游寫說明書時(shí)能井然有序嚴(yán)絲合縫,那就算不懂編程思維也不會(huì)落下風(fēng)。從這個(gè)意義上來說,帶孩子玩不插電編程的游戲,或者教孩子用清晰準(zhǔn)確的語言寫作文,效果和教編程是一樣的。
從 Scratch 到IT公司需要的編程,路還很遠(yuǎn)很遠(yuǎn)……
有些家長看到孩子們的 Scratch 作品后心里美滋滋:“我不懂,但小家伙能自己寫游戲,還真挺厲害。機(jī)構(gòu)老師說這就是編程,等以后進(jìn)階到 Python 很容易,會(huì) Python 就什么都能做了……”
對不起,從幾個(gè) Scratch 游戲聯(lián)想到今后 IT 公司創(chuàng)業(yè)成就,也就是商業(yè)機(jī)構(gòu)哄哄父母們罷了。
IT公司招聘程序員時(shí),有時(shí)會(huì)遇到“代碼學(xué)生氣很重”的候選人,指的是候選人只做過學(xué)校課程類型的項(xiàng)目、缺乏工程實(shí)踐經(jīng)驗(yàn)。但即便是學(xué)生氣重的代碼,參加過信奧的又比沒參加的,在算法上會(huì)高級(jí)好多;即便是不參加信奧、只寫過一些玩具級(jí)別小項(xiàng)目的,通常代碼也還是會(huì)比 Scratch 復(fù)雜不知多少倍。別的不說,光 Scratch 函數(shù)缺乏返回值、數(shù)組只有一維,這些“硬傷”注定了 Scratch 作品能讓孩子掌握的編程知識(shí)相對有限。Scratch 作品和實(shí)際工程代碼間有道鴻溝,會(huì)一點(diǎn)兒 Scratch 編程其實(shí)并不會(huì)在 IT 行業(yè)多多少先發(fā)優(yōu)勢。
二、被低估的 Scratch
但Scratch 的這些“硬傷”,其實(shí)是設(shè)計(jì)者有意為之的。他們非常仔細(xì)的選擇語言特性,故意放棄了一些對程序員來說很重要的功能,為的是讓使用者更輕松上手、更聚焦在設(shè)計(jì)者們所期望的行為上。
對孩子有著很高期望的家長,和想要賣掉更多高階課程的機(jī)構(gòu),往往會(huì)傾向于早一些教孩子們 Python 之類的文本語言。他們總覺得,孩子們通過 Scratch 在編程上入門后,要盡快寫“真正的程序”,停留在用 Scratch 畫動(dòng)畫、做游戲階段,屬于浪費(fèi)時(shí)間。
有這樣的想法,是因?yàn)樗麄儾粫?huì) Scratch 漂亮的高階玩法,也是因?yàn)樗麄儧]有看到 Scratch 珍寶一般的獨(dú)到價(jià)值。
實(shí)驗(yàn)、測試、調(diào)試的方法習(xí)慣,可比編程語言知識(shí)點(diǎn)重要多了!
在哈佛的創(chuàng)意計(jì)算思維框架中,第二個(gè)維度,列出了若干重要實(shí)踐,我們來重點(diǎn)看看以下三條:
-
Experimenting,實(shí)驗(yàn),需要先嘗試?yán)斫獯a塊的作用是什么,再想象它能被用在哪里,然后寫一小段程序去嘗試。
-
Testing,測試,需要猜測代碼塊的某些功能,設(shè)計(jì)方法去驗(yàn)證,且要用不同的猜測和驗(yàn)證去尋找其邊界。
-
Debugging, 調(diào)試,是當(dāng)代碼的運(yùn)行不符合預(yù)期時(shí),一點(diǎn)一點(diǎn)的去排查、糾正錯(cuò)誤。
Scratch 之所以能很好的支持這些實(shí)踐,圖形化的直觀、易于理解是一個(gè)原因;更重要的原因在于用 Scratch 寫代碼運(yùn)行、獲得反饋,實(shí)在是太迅速便捷了。不要小看這一點(diǎn)兒效率上的提升,它為孩子們掃除好大一個(gè)障礙,從而讓孩子能更主動(dòng)的去探索、嘗試。孩子擺弄 Scratch 代碼塊、試出各種有趣的效果,這很常見;但你見過多少個(gè)孩子,會(huì)主動(dòng)通讀 Python 文檔,并且把類庫函數(shù)一個(gè)個(gè)嘗試?
通過“玩 Scratch”,可以培養(yǎng)實(shí)驗(yàn)、測試、調(diào)試的習(xí)慣、學(xué)會(huì)做這些的方法,這是 Scratch 帶給孩子們的一大珍寶。
Scratch 作為用于表達(dá)、創(chuàng)造的工具,其價(jià)值比作為編程語言更高!
其實(shí),Scratch 根本就不應(yīng)該被作為編程語言和 Python 去 PK。Scratch 是個(gè)工具,和它 PK 的應(yīng)該是蠟筆、畫圖板和 PowerPoint。曾經(jīng)孩子們用紙筆畫畫;后來用電腦里的畫圖板,畫的圖片可以復(fù)制、可以在網(wǎng)絡(luò)上分享了;再后來用 PowerPoint 制作具有動(dòng)畫效果的作品,讓演講更生動(dòng)了;而現(xiàn)在,則是可以用 Scratch 做出有交互效果的作品。
Scratch 的“舞臺(tái)/角色/造型/聲音”的設(shè)計(jì)實(shí)在很天才,有極強(qiáng)的表現(xiàn)力可以讓孩子進(jìn)行各種自由創(chuàng)作。會(huì) Scratch 的孩子,十幾分鐘就能搞定一個(gè)趣味小游戲,同樣的內(nèi)容換作 Python 或 JavaScript 來開發(fā),至少得幾小時(shí)甚至幾天。這樣一個(gè)強(qiáng)有力的讓孩子們進(jìn)行表達(dá)和創(chuàng)造的工具,到底會(huì)給孩子帶來什么,其實(shí)你很難想象,就像你難以想象畫筆和白紙對孩子來說意味著什么。
在鉛筆剛被發(fā)明之初,人們思考它對孩子有什么價(jià)值,想到的也許是更方便寫字吧。但如今的孩子,會(huì)用涂鴉表達(dá)情緒、打草稿解智力題、用思維導(dǎo)圖記錄所思所想、畫草圖進(jìn)行工程項(xiàng)目的設(shè)計(jì)……鉛筆比鵝毛筆用起來方便太多,寫錯(cuò)了還能擦,因此在鼓勵(lì)孩子表達(dá)、創(chuàng)造上有特別的作用。那些想著如何考察孩子寫字能力的專家門,是否看得到這些作用呢?他們也許認(rèn)為用鵝毛筆才能寫出優(yōu)美的筆鋒,所以需要盡快切換到鵝毛筆寫字吧。
對 Scratch 來說也是如此:若只關(guān)心 Scratch 在編程入門上的作用,那就像只以孩子學(xué)寫字的水平來判斷鉛筆對孩子的作用一樣。我們更應(yīng)該看到它給孩子表達(dá)、創(chuàng)造上的價(jià)值。
三、不神話,不低估,那該怎么做?
寫這篇文章,是因?yàn)橛屑议L把我上一篇《少兒編程的是與非》發(fā)給了機(jī)構(gòu)老師,老師對文章提出了反對意見,說她孩子應(yīng)該學(xué) Python 了,家長又把對話轉(zhuǎn)給我問到底該怎么做。
我腦中的路徑是這樣的:
-
小學(xué)低年級(jí)就可以學(xué) Scratch,不只是作為編程的入門,更是作為表達(dá)、創(chuàng)作的工具。
-
用項(xiàng)目制的方式帶孩子充分挖掘 Scratch 的功能;同時(shí)如有條件,找好老師教他寫優(yōu)美的代碼(優(yōu)美代碼所能培養(yǎng)的思維技能,我以后單開文章來寫)。
-
當(dāng)孩子的項(xiàng)目越來越真實(shí)時(shí),少不了會(huì)軟硬件結(jié)合。此時(shí)引入 micro:bit 或各種別的硬件。依舊是項(xiàng)目驅(qū)動(dòng),需要什么就學(xué)什么。
-
一般說來小學(xué)階段沒必要學(xué)文本類編程。除非孩子覺得圖形化編程不夠用,從而帶著目的去學(xué)文本類編程,這是應(yīng)該被鼓勵(lì)的。例如他想要寫個(gè)工具處理大量文本,就去學(xué) python 基礎(chǔ)語法以及文本相關(guān)的類庫。最忌諱的,就是急吼吼讓孩子學(xué) Python,還很得意孩子都能學(xué)會(huì),卻沒發(fā)現(xiàn)自打換了 Python 后孩子自主探索和創(chuàng)作的行為少了很多。
-
等孩子上中學(xué)了,再開始系統(tǒng)的學(xué) python 或 javascript,不遲呢。
當(dāng)然,一家之言,只是從我關(guān)心的價(jià)值來考慮的。信奧拿獎(jiǎng)方便升學(xué)等等,都不在我的思考范圍內(nèi)。所以,這條路徑只適合部分孩子,請各位家長明辨。
聲明:本文章由網(wǎng)友投稿作為教育分享用途,如有侵權(quán)原作者可通過郵件及時(shí)和我們聯(lián)系刪除

- 上一篇
我館開展少兒Scratch趣味編程之?dāng)S骰子游戲活動(dòng)
6月15日下午,我館繼續(xù)開展少兒Scratch趣味編程活動(dòng),攜手小朋友們徜徉于編程的世界里,享受無窮樂趣。 本期活動(dòng)主題是“擲骰子”,是編程與數(shù)學(xué)結(jié)合的一個(gè)程序。當(dāng)游戲中按下按鈕的時(shí)候,屏幕隨機(jī)顯示骰子的點(diǎn)數(shù),當(dāng)點(diǎn)數(shù)確定不變后,游戲中的卡通人物說出兩個(gè)骰子的點(diǎn)數(shù)和。
- 下一篇
幼兒編程Scratch第28講:毛毛蟲在睡覺-樂高入門機(jī)器人-WeDo
? ? ? ?買入樂高WeDo入門創(chuàng)造組件,4歲的妹妹也鬧著要玩。這篇文章就是給3-4歲的小孩寫的,哄小孩用的。 ? ? ? 研究了樂高的官網(wǎng),手冊還是很豐富的,上面有Builing instructions-搭建指南,一共有40個(gè),280個(gè)積木塊的多數(shù)應(yīng)用