為孩子寫一本編程書系列:如果為孩子寫本編程書
最近我開始考慮明年的一些個人計劃,我并不會強迫自己去完成一些目標(biāo),而只是將自己在未來一段時間內(nèi)感興趣的事情羅列出來,然后挑一些去進行嘗試。而其中的一項便是寫一本書。我和一些出版社的編輯都曾討論過關(guān)于出書的事情,唯獨對于書的選題讓我頗為糾結(jié)。我并不愿意去寫一本純技術(shù)的書籍,雖然這看起來相對容易也更安全(有市場)——基本上選一個熱門領(lǐng)域或技術(shù),然后參考其他同類書籍,結(jié)合自己編寫的示例和相關(guān)經(jīng)驗進行重寫,但這對于我來說卻有點像炒冷飯,并沒有太大的意義。我知道如果缺乏動力,自己很難寫好這本書,甚至根本就無法完成。而如果讓我按照內(nèi)心的意愿去選擇的話,我更愿意嘗試去為孩子們寫一本編程書。
我的兒子今年六歲,在區(qū)里的一所示范幼兒園讀大班,除了上學(xué)之外,他還報名參加了思維訓(xùn)練的培訓(xùn)班。雖然每天都在按照要求在完成課程和作業(yè),但看得出,他學(xué)得并不快樂。之所以要這么做,也無非是為了想讓孩子上一個更好的小學(xué)。我同事的孩子今年三年級了,和很多同齡孩子一樣,也參加了奧數(shù)班,雖然對她的孩子并不了解,但我卻總能看到我的那位同事埋頭坐在那里,絞盡腦汁地解那些奧數(shù)題。我就想,如果這些題目連我們這些大人解起來都如此費勁,那它們對孩子們的成長又是否真的那么有幫助呢?有沒有一種更好的方式來訓(xùn)練孩子的思維呢并幫助他們更好應(yīng)對未來呢?如果能拋開所有功利的應(yīng)試需求,我想學(xué)習(xí)編程或許會是一個不錯的選擇。
雖然有了方向,但要想教好、教會孩子編程卻并不簡單,我們有必要透過針對孩子們的編程教育現(xiàn)狀,來看看那些普遍存在的問題:
- 過時的教材:很多學(xué)校還在使用那些過時的編程教材,比如,他們?nèi)栽诮毯⒆觽儗W(xué)習(xí)Pacal語言(一種過時的編程語言),而這是我將近20年前學(xué)習(xí)編程所時使用的語言。有人說,教編程的真正目的是教會孩子一種新的思維方式,與使用哪一門編程語言無關(guān)。對于前半句,我很贊同,但關(guān)于編程語言,我卻覺得,如果能教孩子那些在未來更能派上用場的編程語言,并且讓他們從一開始就能習(xí)慣使用這些更現(xiàn)代的編程語言,我們又為什么不這么做呢?
- 不恰當(dāng)?shù)慕虒W(xué)方式:那些給孩子上編程課的大部分都是在校老師。老師當(dāng)然有他們的優(yōu)勢,比如更了解孩子,也能更好地駕馭教學(xué)。但老師們大多并沒有太多的編程經(jīng)驗,他們也更多地像是在教數(shù)學(xué)、物理那樣將一門編程語言的語法、語義、算法等硬生生地灌輸給孩子,而作為考核標(biāo)準(zhǔn)的也大多是那些毫無生趣的算法題,這恰恰忽略了編程最重要的趣味性以及創(chuàng)造和思維能力的培養(yǎng)。結(jié)果是,孩子們?nèi)缤瓿杉彝プ鳂I(yè)般去完成那些編程題,一點也無法體會到編程所帶來的的樂趣,這也直接摧毀了孩子們學(xué)習(xí)的熱情,學(xué)習(xí)編程竟成了孩子們的又一個負擔(dān)。
- 趕時髦般的培訓(xùn)班:隨著編程教學(xué)越來越受到家長的重視,很多社會上針對兒童的編程培訓(xùn)機構(gòu)也都冒了出來,當(dāng)然是魚龍混雜,良莠不齊。我們姑且不論那些培訓(xùn)班的資質(zhì)以及老師的教學(xué)能力,就拿他們廣泛使用的編程語言Scratch來說,也只是像這些年很火的樂高培訓(xùn)一樣,一些根本不懂編程的老師經(jīng)過短期培訓(xùn),便去教孩子了,能教會孩子什么,真的很難說。編程是一項深入的思維運動,需要長期實踐才能逐漸掌握,而像今天那些家長那樣,不根據(jù)自己孩子的情況,趕時髦般地將他們趕去學(xué)習(xí)編程,并不會得到理想的效果。
- 美學(xué)教育的缺失:我認識很多程序員,他們都不是編程的初學(xué)者,但往往阻礙他們寫出優(yōu)秀程序、作出更優(yōu)秀產(chǎn)品的卻并不是大多數(shù)人理解編程所需要的邏輯思維能力,反而是對于美的認知。既然不知道什么是美的,那作出來的東西又怎么會美呢?這并不單純指我們平時聽到的那些UI(用戶界面)、UX(用戶體驗)等設(shè)計概念和技巧,更在于對美的本質(zhì)的感知和覺察能力。而這種能力本應(yīng)該在兒童時期就開始培養(yǎng),但遺憾的是國內(nèi)對于美學(xué)教育的缺失非常嚴(yán)重。編程教學(xué)作為一項制作與創(chuàng)造課程,本是可以將那些關(guān)于美的知識和實踐融入其中的,但大多數(shù)的教材和老師并沒有那樣做。
通過一本書來解決上面這些問題看似天方夜譚,但卻值得去嘗試一番,即使作為對現(xiàn)有編程教學(xué)大環(huán)境的一點小小補充,也會讓我覺得頗有意義。
一本給所有編程初學(xué)者的入門書
與動輒幾百元一節(jié)的幼兒編程課不同,我始終認為,教授孩子編程的***方式應(yīng)該是家長與孩子一起學(xué)習(xí)編程,大人的理解能力加上孩子的想象和創(chuàng)造能力,這簡直是一個***的學(xué)習(xí)組合,而在家長的陪伴下持續(xù)地學(xué)習(xí)和實踐遠比每周上一節(jié)編程課來的有效。我可能并不會在這本書里加入過多適合低齡兒童的插圖,而是希望包含盡可能多的內(nèi)容,以編程為主,并涉及從藝術(shù)、設(shè)計、編程、思維、作品發(fā)布等各個環(huán)節(jié),讓孩子們通過學(xué)習(xí)能夠真正作出有意義的作品來。在我看來,這本書應(yīng)該適合所有有意愿陪孩子一起學(xué)編程的家長以及那些希望自學(xué)編程的初學(xué)者來讀。
教手藝,而不是知識
教授知識與教授手藝的***區(qū)別在于其目的性,對孩子們來說,學(xué)知識往往是被動的,真正應(yīng)用如化學(xué)、物理等知識常常需要進入大學(xué)相關(guān)專業(yè)之后,而在中小學(xué)期間,孩子們學(xué)習(xí)過程中得到的激勵往往來自于比較,如考試成績,家長的表揚,或老師提問時比其他同學(xué)更早算出答案。但比較往往會帶來壓力,也僅僅對那些優(yōu)秀學(xué)生更有效。而學(xué)手藝卻是為了去不斷作出更好的作品,你是在和過去的自己比較,而只要持續(xù)地學(xué)習(xí)和實踐,你就一定能獲得正面的激勵,因為隨著技能的提升,你做出來的東西總是會比過去更好,它對所有學(xué)習(xí)者都是有效的。我想寫的這本書里當(dāng)然會包含某一門編程語言的語法、語義等基本知識,但并不會包含那些復(fù)雜的數(shù)據(jù)結(jié)構(gòu)或算法,只有在用到的時候我們才會用最簡明的方式加以介紹,一切都會圍繞獲得更好的手藝并作出更優(yōu)秀的作品去寫。
一門現(xiàn)代且面向未來的語言
對于孩子和那些編程初學(xué)者來說,這或許是他們的***門編程語言。這門語言既應(yīng)該是易學(xué)的,又應(yīng)該是現(xiàn)代且面向未來的。
易學(xué):考慮到不同年齡段孩子的接受能力,這門編程語言應(yīng)該是簡明、一致、清晰的。這體現(xiàn)在語言的語法、數(shù)據(jù)結(jié)構(gòu)、控制邏輯、可供使用組件、甚至包括IDE(集成開發(fā)環(huán)境)以及教學(xué)資源和等各個方面。它應(yīng)該是易學(xué)、且更易構(gòu)建出豐富應(yīng)用的。
現(xiàn)代的:編程語言的種類非常多,有些語言的年齡比我們都大,而幾乎每一門語言背后都會有一個長長的故事,至于為什么發(fā)明這門編程語言,它的主要用途是什么,它又有什么特點,這些問題往往要花上一整天才能講清。今天,很多新語言在不斷出現(xiàn),比如Swift、R、Go,也有很多語言則已逐漸被淘汰,比如VB、Pacal。一門現(xiàn)代語言意味著它具有那些經(jīng)過長期實踐被證明是優(yōu)秀的語言特性,另外它也正在得到廣泛的應(yīng)用。
面向未來的:面向未來的編程語言應(yīng)該是開放的(比如:開源),這意味著它能借助更多程序員的力量獲得持續(xù)的發(fā)展,并得到更多人的使用和認可。另外,一門編程語言的基因也能決定它的未來,比如:面向過程、面向?qū)ο蟆⒙暶魇骄幊?、函?shù)式編程等等,正是它們決定了一門編程語言的特性、編程思想、適用場景以及未來的發(fā)展方向。舉例來說,雖然,現(xiàn)在仍有很多iOS應(yīng)用是用Object C來開發(fā)的,但當(dāng)我們理解Swift將會成為“***款工業(yè)級質(zhì)量的系統(tǒng)編程語言!”這個斷言,以及認識到Swift的那些優(yōu)秀語言特性后,我們就應(yīng)該意識到對于iOS開發(fā)者來說不去追求Swift是非常愚蠢的。
基于這些考慮,我比對了自己心目中那些可以用來教學(xué)的編程語言,決定在Python或Swift中選擇一門語言,來完成這本書。
利用所有優(yōu)秀的資源
很多編程書籍中都會包含自帶的代碼、示例、工具等等,看起來這樣的書非常完整,但我卻發(fā)現(xiàn)這些附帶的資源往往并不好用,或沒有什么價值?,F(xiàn)在網(wǎng)上有太多優(yōu)秀的學(xué)習(xí)資源,只是很多人不知道,或者不善于使用罷了。而我希望這本書能夠更加開放,如果網(wǎng)上已經(jīng)有了更優(yōu)秀的內(nèi)容,那我就沒有必要再去重復(fù),而只需要幫助大家去發(fā)現(xiàn)和更有效地使用它們。例如,假設(shè)我這本書最終使用Swift語言進行教學(xué),那我一定會告訴你利用iPad上Palyground這款A(yù)PP進行學(xué)習(xí),當(dāng)然我會在書中告訴大家如何更有效地使用它,這會大大提高我們的學(xué)習(xí)效率。
兼顧藝術(shù)、設(shè)計與創(chuàng)造
光有編程,我們并無法得到那些吸引人的東西,人們特別是孩子都是視覺動物,如果做出來的東西不漂亮,那他們很容易會感到失望而對學(xué)習(xí)失去興趣。我希望這本書能對編程教學(xué)做一些延伸和擴展,比如在那些示例中引導(dǎo)孩子正確地理解和運用色彩、合理地進行排版使內(nèi)容更加清晰,巧妙使用動效讓作品更加生動有趣等等,通過這些,讓孩子們在學(xué)習(xí)編程的同時,掌握最基本的設(shè)計知識,并啟發(fā)他們對于對于美的認知。
關(guān)于書的形式
關(guān)于書的形式,我希望會有不同的版本,我可能會做一個網(wǎng)站來呈現(xiàn)這本書,包括那些教學(xué)視頻、示例代碼、并且展示那些孩子們通過學(xué)習(xí)制作出來的作品。我也希望有紙質(zhì)書和電子書的版本,以滿足不同讀者的需求。
上面的這些觀點只是我此時此刻所能想到的,而更多的東西只有在實踐中才能獲得。好在我已經(jīng)有了自己的學(xué)生,我的兒子Ian。我會不斷在這個專題中更新我教學(xué)的內(nèi)容、進展、孩子學(xué)習(xí)的反饋,并接受大家的意見。如果你對教孩子編程這件事也有自己的想法,不妨留言,這將能幫助我更好地完成這個挑戰(zhàn)。
【本文是51CTO專欄作者“陳逸鶴”的原創(chuàng)文章,如需轉(zhuǎn)載請聯(lián)系作者本人(微信公眾號:techmask】