要么被神話,要么被低估的 Scratch編程

admin 發表于 2019-06-17 16:18

http://www.oeerar.tw/Uploads/timg/190617/161TR493-0.jpg

本文轉載自公眾號:“南瓜博士”,原文標題《被神話以及被低估的Scratch》,文章內容有刪改。

人們提少兒編程,多半會想到 Scratch。有人說 Scratch 太重要,孩子要應對未來世界必須得會編程,而學編程的最好方式就是 Scratch。也有人說 Scratch 不過是個入門的玩具,只要孩子能懂,還是應該盡早教 Python、JavaScript、C++ 之類的正經語言。

上個月《少兒編程教育的是與非》一文發出后,我陸續收到一些伙伴提問,問如何看待上面兩種觀點。我覺得吧,Scratch 被神話了,并且它也被低估了。神話它和低估它的,還常常是同一群人。

被神化的 Scratch

神話 Scratch 的說詞通常出現在制造焦慮的軟文里,我猜大家早看膩了。無非是搬出比爾蓋茨或喬布斯來證明從小學編程有多重要,再找些看起來已經擁有開掛人生的編程少年讓你羨慕一下,最后告訴你 Scratch 有多簡單、孩子有多愛它。似乎有了 Scratch,你的孩子也能像開掛少年或世界首富一般,笑對未來被機器人統治的世界。

但,真是如此嗎?

會寫 if...else... 又如何?

首先,這類軟文中所謂的“編程思維”真沒什么了不起。不就是把“如果...那么...否則...”、“不斷重復...直到...”改成了 if...then...else... 和 repeat...until... 這樣幾個橘黃色小方塊嘛,憑什么換了個語言就成為高人一等的“編程思維”了?我還能把它翻譯成上百種語言呢,有差別嗎?

事實上,它的關鍵在于精確、無歧義的表達,這是計算機語言不同于人類自然語言的一大特點。若孩子們雖然用一層層嵌套的 if...else... 寫代碼、邏輯卻混亂不清只是湊巧能正確運行,那還是沒捕捉到計算機語言的好。若孩子們用中文的表達都如法律文書一般嚴謹,給自己設計的桌游寫說明書時能井然有序嚴絲合縫,那就算不懂編程思維也不會落下風。從這個意義上來說,帶孩子玩不插電編程的游戲,或者教孩子用清晰準確的語言寫作文,效果和教編程是一樣的。

從 Scratch 到IT公司需要的編程,路還很遠很遠……

有些家長看到孩子們的 Scratch 作品后心里美滋滋:“我不懂,但小家伙能自己寫游戲,還真挺厲害。機構老師說這就是編程,等以后進階到 Python 很容易,會 Python 就什么都能做了……”

對不起,從幾個 Scratch 游戲聯想到今后 IT 公司創業成就,也就是商業機構哄哄父母們開心罷了。

IT公司招聘程序員時,有時會遇到“代碼學生氣很重”的候選人,指的是候選人只做過學校課程類型的項目、缺乏工程實踐經驗。但即便是學生氣重的代碼,參加過信奧的又比沒參加的,在算法上會高級好多;即便是不參加信奧、只寫過一些玩具級別小項目的,通常代碼也還是會比 Scratch 復雜不知多少倍。別的不說,光 Scratch 函數缺乏返回值、數組只有一維,這些“硬傷”注定了 Scratch 作品能讓孩子掌握的編程知識相對有限。Scratch 作品和實際工程代碼間有道鴻溝,會一點兒 Scratch 編程其實并不會在 IT 行業多多少先發優勢。

被低估的 Scratch

但Scratch 的這些“硬傷”,其實是設計者有意為之的。他們非常仔細的選擇語言特性,故意放棄了一些對程序員來說很重要的功能,為的是讓使用者更輕松上手、更聚焦在設計者們所期望的行為上。

對孩子有著很高期望的家長,和想要賣掉更多高階課程的機構,往往會傾向于早一些教孩子們 Python 之類的文本語言。他們總覺得,孩子們通過 Scratch 在編程上入門后,要盡快寫“真正的程序”,停留在用 Scratch 畫動畫、做游戲階段,屬于浪費時間。

有這樣的想法,是因為他們不會 Scratch 漂亮的高階玩法,也是因為他們沒有看到 Scratch 珍寶一般的獨到價值。

實驗、測試、調試的方法習慣,可比編程語言知識點重要多了!

在哈佛的創意計算思維框架中,第二個維度,列出了若干重要實踐,我們來重點看看以下三條:

  • Experimenting,實驗,需要先嘗試理解代碼塊的作用是什么,再想象它能被用在哪里,然后寫一小段程序去嘗試

  • Testing,測試,需要猜測代碼塊的某些功能,設計方法去驗證,且要用不同的猜測和驗證去尋找其邊界

  • Debugging, 調試,是當代碼的運行不符合預期時,一點一點的去排查、糾正錯誤。

Scratch 之所以能很好的支持這些實踐,圖形化的直觀、易于理解是一個原因;更重要的原因在于用 Scratch 寫代碼運行、獲得反饋,實在是太迅速便捷了。不要小看這一點兒效率上的提升,它為孩子們掃除好大一個障礙,從而讓孩子能更主動的去探索、嘗試。孩子擺弄 Scratch 代碼塊、試出各種有趣的效果,這很常見;但你見過多少個孩子,會主動通讀 Python 文檔,并且把類庫函數一個個嘗試?

通過“玩 Scratch”,可以培養實驗、測試、調試的習慣、學會做這些的方法,這是 Scratch 帶給孩子們的一大珍寶。

Scratch 作為用于表達、創造的工具,其價值比作為編程語言更高!

其實,Scratch 根本就不應該被作為編程語言和 Python 去 PK。Scratch 是個工具,和它對標的應該是鉛筆、畫圖板和 PowerPoint。曾經孩子們用紙筆畫畫;后來用電腦里的畫圖板,畫的圖片可以復制、可以在網絡上分享了;再后來用 PowerPoint 制作具有動畫效果的作品,讓演講更生動了;而現在,則是可以用 Scratch 做出有交互效果的作品。Scratch就是信息時代的鉛筆。

Scratch 的“舞臺/角色/造型/聲音”的設計實在很天才,有極強的表現力可以讓孩子進行各種自由創作。會 Scratch 的孩子,十幾分鐘就能搞定一個趣味小游戲,同樣的內容換作 Python 或 JavaScript 來開發,至少得幾小時甚至幾天。這樣一個強有力的讓孩子們進行表達和創造的工具,到底會給孩子帶來什么,其實你很難想象,就像你難以想象畫筆和白紙對孩子來說意味著什么。

在鉛筆剛被發明之初,人們思考它對孩子有什么價值,想到的也許是更方便寫字吧。但如今的孩子,會用涂鴉表達情緒、打草稿解智力題、用思維導圖記錄所思所想、畫草圖進行工程項目的設計……鉛筆比鵝毛筆用起來方便太多,寫錯了還能擦,因此在鼓勵孩子表達、創造上有特別的作用。那些想著如何考察孩子寫字能力的專家門,是否看得到這些作用呢?他們也許認為用鵝毛筆才能寫出優美的筆鋒,所以需要盡快切換到鵝毛筆寫字吧。

對 Scratch 來說也是如此:若只關心 Scratch 在編程入門上的作用,那就像只以孩子學寫字的水平來判斷鉛筆對孩子的作用一樣。我們更應該看到它給孩子表達、創造上的價值。

不神話,不低估,那該怎么做?

寫這篇文章,是因為有家長把我上一篇《少兒編程的是與非》發給了機構老師,老師對文章提出了反對意見,說她孩子應該學 Python 了,家長又把對話轉給我問到底該怎么做。

我腦中的路徑是這樣的:

  1. 小學低年級就可以學 Scratch,不只是作為編程的入門,更是作為表達、創作的工具。

  2. 用項目制的方式帶孩子充分挖掘 Scratch 的功能;同時如有條件,找好老師教他寫優美的代碼(優美代碼所能培養的思維技能,我以后單開文章來寫)。

  3. 當孩子的項目越來越真實時,少不了會軟硬件結合。此時引入 micro:bit 或各種別的硬件。依舊是項目驅動,需要什么就學什么。

  4. 一般說來小學階段沒必要學文本類編程。除非孩子覺得圖形化編程不夠用,從而帶著目的去學文本類編程,這是應該被鼓勵的。例如他想要寫個工具處理大量文本,就去學 python 基礎語法以及文本相關的類庫。最忌諱的,就是急吼吼讓孩子學 Python,還很得意孩子都能學會,卻沒發現自打換了 Python 后孩子自主探索和創作的行為少了很多。

  5. 等孩子上中學了,再開始系統的學 python 或 javascript,不遲呢。

當然,一家之言,只是從我關心的價值來考慮的。信奧拿獎方便升學等等,都不在本文討論范疇。如何理解,請各位學生家長明辨。

后記,小編朋友公司研發了一個游戲化的少兒編程在線課程(5-12歲),游戲化教學結合scratch(一款在線少兒編程工具,類似樂高的積木拼搭),我家娃娃學了幾次課,非常喜歡(超預期),16次課才200多塊錢,對鍛煉孩子的思維能力和動手動力很有幫助。

感興趣的朋友可以掃描二維碼,關注一下,或微信搜索“大耳猴少兒編程”

http://www.oeerar.tw/Uploads/Editor/2018-04-22/5adca08bdc212.jpg