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

- 上一篇
被神話以及被低估的 Scratch
授權(quán)轉(zhuǎn)載 | 南瓜博士?nangua_boshi 原文作者 |??ElfeXu 原文標(biāo)題?|?被神話以及被低估的 Scratch 標(biāo)簽:難度高級;觀點(diǎn);少兒編程;Scratch 人們提少兒
- 下一篇
我館開展少兒Scratch趣味編程之?dāng)S骰子游戲活動
6月15日下午,我館繼續(xù)開展少兒Scratch趣味編程活動,攜手小朋友們徜徉于編程的世界里,享受無窮樂趣。 本期活動主題是“擲骰子”,是編程與數(shù)學(xué)結(jié)合的一個程序。當(dāng)游戲中按下按鈕的時候,屏幕隨機(jī)顯示骰子的點(diǎn)數(shù),當(dāng)點(diǎn)數(shù)確定不變后,游戲中的卡通人物說出兩個骰子的點(diǎn)數(shù)和。