概十年前,億速思維(ETSOO)發(fā)布了一款編輯器EOEditor,還注冊(cè)了軟件著作權(quán)證,在2018年發(fā)布了4.0 (還能在網(wǎng)上搜索到:https://www.onlinedown.net/soft/35767.htm)后就停止了更新,因?yàn)榇a過(guò)于浮腫,沒(méi)有吸收新的技術(shù),也沒(méi)有跟著潮流,做版本控制,問(wèn)題越攢越多。公司后來(lái)的產(chǎn)品開(kāi)發(fā),采用了百度的UEditor(https://fex.baidu.com/ueditor/),使用過(guò)程中也發(fā)現(xiàn)一些問(wèn)題,奈何不是自己的產(chǎn)品,改進(jìn)很難,后來(lái)它也停更,做免費(fèi)的組件產(chǎn)品,在哪個(gè)國(guó)家,哪個(gè)規(guī)模的企業(yè),都很難。一切似乎又回到了起點(diǎn)。
2019年底來(lái)新西蘭后,接觸了很多新人新事,發(fā)現(xiàn)自己的技術(shù)底層邏輯,需要大面積迭代,花了很多時(shí)間,可以說(shuō)是夜以繼日的學(xué)習(xí),重新刷新了HTML5/JavaScript/CSS 2, CSS3,重新學(xué)習(xí)了TypeScript,學(xué)習(xí)實(shí)踐GIT版本控制,更新所有的技術(shù)知識(shí)點(diǎn)到最新版本,來(lái)重構(gòu)億速思維的底層技術(shù)框架,這個(gè)過(guò)程,一晃就將近3年。
過(guò)程很艱難,現(xiàn)在的結(jié)果看起來(lái)走到了正確的道路上,所有的腳本代碼,全部使用了TypeScript,能形成Package的,只要不威脅公司核心機(jī)密,都盡可能發(fā)布到GitHub開(kāi)源。今年3月,為了完成公司的技術(shù)拼圖,決定重新這個(gè)編輯器,到今天基本完成第一個(gè)版本,耗時(shí)兩個(gè)多月,GitHub:https://github.com/ETSOO/EOEditor,下面是界面截圖。
EOEditor 2022界面截圖
新版本的幾個(gè)亮點(diǎn):
圖片編輯器截圖,可以直觀看到一些基本功能:
圖片編輯器效果
I 技術(shù)正在改變我們的生活,無(wú)論踩在時(shí)代浪尖的技術(shù)精英,還是受到新興技術(shù)利好的你我,都要面對(duì)一個(gè)共同的問(wèn)題——AI 時(shí)代下對(duì)孩子的教育。
如何著手培養(yǎng)孩子們對(duì)新興技術(shù)事物的興趣?從哪里入手引導(dǎo)才能讓孩子們?cè)贏I 無(wú)處不在的未來(lái)找到一席之地?父母怎樣在日常的陪伴中發(fā)揮積極作用?想必這是不少家長(zhǎng)心中的困惑之一。
近日,創(chuàng)新工場(chǎng)人工智能工程院執(zhí)行院長(zhǎng)王詠剛老師寫(xiě)了一篇文章,講述了他是如何在日常生活中通過(guò)幾個(gè)有趣的游戲來(lái)調(diào)動(dòng)兒子非非的學(xué)習(xí)興趣,在不知不覺(jué)中培養(yǎng)了孩子的邏輯思維等思考方式,也分享了自身對(duì)孩子教育的看法和感悟。
文章中介紹的互動(dòng)游戲簡(jiǎn)單易行、啟發(fā)思維,非常有借鑒價(jià)值,希望能給 AI 時(shí)代下身為家長(zhǎng)的你帶來(lái)啟發(fā)▼▼▼
王詠剛
創(chuàng)新工場(chǎng)人工智能工程院執(zhí)行院長(zhǎng),畢業(yè)于北京大學(xué),此前擔(dān)任谷歌資深工程師超過(guò)10年,參與、負(fù)責(zé)研發(fā)的項(xiàng)目包括桌面搜索、谷歌拼音輸入法、產(chǎn)品搜索、知識(shí)圖譜、谷歌首頁(yè)涂鴉等,在知識(shí)圖譜、分布式系統(tǒng)、輸入法、HTML5動(dòng)畫(huà)、游戲引擎等技術(shù)領(lǐng)域擁有很深的積累。
說(shuō)來(lái)簡(jiǎn)單,我們家小朋友非非剛上小學(xué)。我自己呢,工作忙,又不那么信任市面上的各路興趣班。總想擠時(shí)間,陪非非玩些有趣的游戲;最好還能讓非非在玩耍時(shí),積累些未來(lái)用得上的思考方法。
首先,非非長(zhǎng)大后,人工智能(AI)肯定會(huì)像今天的手機(jī)一樣深入到他們生活的每個(gè)角落,重復(fù)性的、思維模式簡(jiǎn)單的工作大多會(huì)被機(jī)器包辦。非非以及同齡的這一批智人后代長(zhǎng)大后,一定好奇地問(wèn):人和機(jī)器的區(qū)別是什么?這問(wèn)題很樸素,也很扎心。如果人類沒(méi)法擁有區(qū)別于機(jī)器的稀缺性技能,那茫茫宇宙,何處才是我們的棲身之所?
其次,人的價(jià)值來(lái)自于稀缺性。不提高大上的指標(biāo),哪怕只用最世俗的收入多少來(lái)衡量,咱們也得承認(rèn),成功的人都至少具備稀缺性資源或稀缺性技能。稀缺性資源,比如富豪爹媽、基因里的超高智商、中大獎(jiǎng)或發(fā)現(xiàn)寶藏之類,不是我們凡人想有就能有的;但稀缺性技能,比如數(shù)學(xué)功底、科研能力、藝術(shù)創(chuàng)作能力等等,還勉強(qiáng)算是后天可以培養(yǎng)的。
其實(shí),我們這一代互聯(lián)網(wǎng)人,見(jiàn)過(guò)太多硅谷類型或中關(guān)村類型的成功案例,典型的情節(jié)是:家境貧寒,刻苦攻讀,僅靠著計(jì)算機(jī)、數(shù)學(xué)等專業(yè)的一技之長(zhǎng),或在學(xué)術(shù)圈成名,或在名企建功,或在創(chuàng)業(yè)路上一飛沖天——這些人,靠的其實(shí)就是稀缺性技能。
那孩子該如何從小培養(yǎng)稀缺性技能呢?
我并沒(méi)有為小朋友規(guī)劃好人生道路,或者用世俗的「成功」當(dāng)胡蘿卜掛在他眼前的意思。我只是覺(jué)得,家長(zhǎng)至少應(yīng)該給孩子展示出未來(lái)建立「稀缺性技能體系」的各種可能性,培養(yǎng)孩子慢慢掌握科學(xué)、工程、語(yǔ)言、文學(xué)、藝術(shù)等領(lǐng)域的最基本的思考方法。對(duì)孩子來(lái)說(shuō),功名利祿皆可拋棄,真正有用的思考方法卻足以讓他們受益一生。哪怕孩子以后只過(guò)個(gè)閑云野鶴一樣的灑脫生活,那也至少要培養(yǎng)一下不低俗、不媚俗,不把無(wú)知當(dāng)有趣的心胸和眼界。
要培養(yǎng)有用的思考方法,個(gè)人認(rèn)為,與其逼著孩子學(xué)這學(xué)那,還不如陪孩子玩些有趣的游戲。
我自己編程二三十年,在地球上最好的技術(shù)公司也工作了十年以上。我一直相信這個(gè)論斷:理工科全憑邏輯思維;無(wú)論科研與工程,邏輯思維愈強(qiáng),解決問(wèn)題的能力就愈強(qiáng);相比之下,其他都是末節(jié)。延展到理工科之外,比如文藝創(chuàng)作,雖說(shuō)形象思維能力、情感共鳴和表達(dá)能力更重要些,但基本的邏輯思維也不能少。
編程領(lǐng)域的算法問(wèn)題,特別適合用來(lái)培養(yǎng)小孩子的邏輯思維能力。但有關(guān)如何學(xué)習(xí)編程,我也得先表明態(tài)度:小朋友沒(méi)必要從小學(xué)編程,就算學(xué)了一兩門編程語(yǔ)言、一兩項(xiàng)實(shí)用技術(shù),等長(zhǎng)大后,技術(shù)早變了天,學(xué)到的具體語(yǔ)言和技術(shù)根本派不上用場(chǎng);相反,算法問(wèn)題可以抽象成好玩的游戲,甚至不需要電腦,不用愁小孩子天天看屏幕,他們就可以從有趣的游戲中,逐步學(xué)到特別有用的邏輯思維方法。
漢諾塔的游戲特別經(jīng)典,暗藏了分治法、遞推和遞歸等重要思想。非非七歲生日前后,我跟他第一次玩了漢諾塔。非非有個(gè)特點(diǎn),要玩什么或者學(xué)什么,最好得有個(gè)好玩的故事當(dāng)「誘餌」。
玩游戲前,我就跟他講印度僧侶搬運(yùn)漢諾塔上的盤(pán)子,直到世界末日也搬不完的有趣傳說(shuō)。標(biāo)準(zhǔn)版本的漢諾塔游戲和算法請(qǐng)參考維基百科。我們玩的時(shí)候,因?yàn)槭诸^沒(méi)有現(xiàn)成的塔和盤(pán)子(淘寶到處有賣,但個(gè)人覺(jué)得還不如我們發(fā)明的玩法好玩),我就把漢諾塔的游戲稍作修改,游戲道具變成了三把椅子和幾本大小不同的書(shū)。
游戲規(guī)則:
這規(guī)則對(duì)六七歲的小朋友來(lái)說(shuō)并不難理解,而且,只要用三本書(shū)試一下,并不斷告訴小朋友什么樣的移動(dòng)符合規(guī)則,什么樣的移動(dòng)不符合規(guī)則,就很容易玩下去了。
一般來(lái)說(shuō),六七歲的小朋友自己完成三本書(shū)的移動(dòng),大都沒(méi)什么難處。這里面比較重要的一件事情是:家長(zhǎng)要學(xué)會(huì)做一個(gè)聰明的觀察者,看一看小朋友在移動(dòng)三本書(shū)的過(guò)程中,是不是在有意識(shí)地總結(jié)規(guī)律。一個(gè)會(huì)總結(jié)規(guī)律的小朋友,接下來(lái)挑戰(zhàn)四本書(shū)、五本書(shū)甚至六本書(shū)時(shí),表現(xiàn)出來(lái)的解決問(wèn)題的能力,要遠(yuǎn)超過(guò)不會(huì)總結(jié)規(guī)律的小朋友。
根據(jù)漢諾塔的算法原理,移動(dòng) n 層的塔,最少需要 2^n-1(2 的 n 次方減 1)步。移動(dòng)三層的塔最少需要 7 步。
非非純用嘗試的方法,花了三四分鐘,就找到了 7 步的解決方案。然后,非非就試圖自己總結(jié)漢諾塔的移動(dòng)規(guī)律。可他天生有急性子基因,總結(jié)規(guī)律時(shí),很少用完整、嚴(yán)密的邏輯。我記得當(dāng)時(shí)他的總結(jié)是:
要先把最小的一本書(shū)移動(dòng)到目標(biāo)椅子(第三把椅子)上,然后把第二小的書(shū)移動(dòng)到中間空著的椅子(第二把椅子)上。
這屬于只看表面關(guān)聯(lián)的「捷徑式」總結(jié)。這樣總結(jié)出的規(guī)律當(dāng)然不適應(yīng)所有情況。但非非能總結(jié)規(guī)律,這就比每次都用嘗試法解決問(wèn)題的小朋友有進(jìn)步。
我覺(jué)得,作為觀察者的家長(zhǎng)要做的,不是馬上告訴孩子他總結(jié)的規(guī)律不對(duì),反而要對(duì)他總結(jié)規(guī)律的做法予以鼓勵(lì)。
然后,可以開(kāi)始跟他玩四本書(shū)的漢諾塔。這一次,游戲的復(fù)雜度不僅提高了一倍(以移動(dòng)次數(shù)來(lái)計(jì)算),孩子也會(huì)從一個(gè)新的初始狀態(tài)開(kāi)始,自己來(lái)驗(yàn)證剛才總結(jié)的規(guī)律是否正確。
非非玩四本書(shū)的漢諾塔玩了很久。他很快就發(fā)現(xiàn),剛才從三層漢諾塔總結(jié)的規(guī)律明顯有問(wèn)題。他幾乎立即放棄了錯(cuò)誤的規(guī)律,而重新開(kāi)始了嘗試。但這次嘗試的難度大得多,因?yàn)樗谋緯?shū)來(lái)回移動(dòng)的可能路徑更多,直觀上也較難發(fā)現(xiàn)當(dāng)前狀態(tài)和目標(biāo)狀態(tài)的關(guān)聯(lián)。
最終,在不斷試錯(cuò)外加我的一點(diǎn)點(diǎn)提示的基礎(chǔ)上,非非還是完成了四層的漢諾塔游戲。然后,他又急于總結(jié)其中的規(guī)律:
如果是三層的塔,就要先把最小的一本書(shū)移動(dòng)到目標(biāo)椅子(第三把椅子)上;如果是四層的塔,就要先把最小的一本書(shū)移動(dòng)到非目標(biāo)椅子(第二把椅子)上。
這個(gè)總結(jié)比之前的總結(jié)有大幅進(jìn)步,因?yàn)榉欠菍W(xué)會(huì)了區(qū)分不同的初始狀態(tài)。而且,非非還很聰明地猜到,三層、四層的差別,很可能在層數(shù)更多時(shí)也適用——奇數(shù)層的漢諾塔會(huì)有類似三層塔的解決方案,偶數(shù)層的漢諾塔則會(huì)有類似四層塔的解決方案。
雖然非非總結(jié)的新規(guī)律是對(duì)的,但只對(duì)了一部分,仍然只是一種「捷徑式」的規(guī)律。因?yàn)橹恢雷钚〉囊槐緯?shū)怎么移動(dòng),并不能完全解釋其他書(shū)的移動(dòng)過(guò)程。非非之所以只憑借這個(gè)規(guī)律,可以把四層的漢諾塔解決得非常好,是因?yàn)樗膶铀?jiǎn)單,第一本書(shū)移動(dòng)后,接下來(lái)該如何做,他腦子里已經(jīng)有了既有的經(jīng)驗(yàn),大致能記得相關(guān)的順序。
非非總結(jié)的「捷徑式」規(guī)律,是很難解決五層、六層的漢諾塔的。當(dāng)我讓他嘗試五層的漢諾塔時(shí),他沒(méi)多久就邏輯紊亂、不知所措了。只能說(shuō),非非的智力水平并不比尋常小朋友高多少,邏輯思維時(shí)也習(xí)慣使用「捷徑式」而不是系統(tǒng)化的方法。這時(shí),就有必要用有效的方法來(lái)引導(dǎo)小朋友,讓他自己去歸納并認(rèn)識(shí)到真正系統(tǒng)化的思考方法。
我:要把五本書(shū)般到第三把椅子,和只用四本書(shū)時(shí)相比,最難的是什么?
非非:最難的是把最底下那本最大的書(shū)搬過(guò)去。因?yàn)槲覄偛旁嚵撕枚啻危厦娴臅?shū)搬不完,就沒(méi)法搬最下面那本。
我:那假如我們已經(jīng)有一種好方法,把上面四本書(shū)都搬到了第二把椅子,這時(shí)你的問(wèn)題還容易解決嗎?
非非:那太容易了!只要把剩下那本最大的書(shū)直接般到第三把椅子就行了。
我:那你想一想,我們先不考慮第五本書(shū),而是把問(wèn)題簡(jiǎn)化成,如何把上面四本書(shū)搬運(yùn)到第二把椅子上?這你能做到嗎?
非非:可以呀!
我:你剛才已經(jīng)可以成功地把四本書(shū)搬到第三把椅子上了。現(xiàn)在,你只要假裝第二把椅子就是第三把椅子,是不是就可以用類似的方法,把上面四本書(shū)搬到第二把椅子上?
非非:對(duì)呀!(當(dāng)然,「假裝第二把椅子就是第三把椅子」這件事做起來(lái)并不直觀,需要一定的抽象思維能力,非非也確實(shí)花了一定時(shí)間來(lái)琢磨目標(biāo)椅子和非目標(biāo)椅子交換后的新情況,但他還是正確完成了任務(wù)。)
我:接下來(lái),你只要做兩件事:第一,把最大的第五本書(shū)直接搬到第三把椅子上;第二,把第二把椅子上的四本書(shū)搬到第三把椅子上。對(duì)嗎?
非非:耶!這兩件事我都會(huì)做!
經(jīng)過(guò)這樣的討論和嘗試,雖然非非無(wú)法用準(zhǔn)確的語(yǔ)言來(lái)描述,但他腦子里已大致有了這件事的正確思路:要移動(dòng)五本書(shū),可以先解決移動(dòng)四本書(shū)的問(wèn)題;要移動(dòng)四本書(shū),可以先解決移動(dòng)三本書(shū)的問(wèn)題;要移動(dòng)三本書(shū),可以先解決移動(dòng)兩本書(shū)的問(wèn)題……解決了每個(gè)子問(wèn)題后,再回過(guò)頭解決上一層級(jí)的問(wèn)題。
經(jīng)歷了這樣的總結(jié)規(guī)律、適應(yīng)新情況、否定規(guī)律、總結(jié)新規(guī)律、再次適應(yīng)新情況、梳理邏輯、系統(tǒng)化思考的完整過(guò)程,小朋友會(huì)模糊認(rèn)識(shí)到好幾個(gè)特別關(guān)鍵的數(shù)學(xué)、編程乃至整個(gè)科學(xué)與工程領(lǐng)域常用的思考方法(下面的定義并不嚴(yán)密,只是為了和小朋友溝通方便):
對(duì)于六七歲的孩子來(lái)說(shuō),理解分治法和遞推法不算特別困難,但要真正理解遞歸,恐怕就超出「教學(xué)大綱」了。事實(shí)上,非非雖學(xué)會(huì)了如何去處理五層的漢諾塔,但基本思維方式還是停留在分治和遞推這兩件較簡(jiǎn)單的事情上。不過(guò)不要緊,未來(lái)等非非大一些,可以再?gòu)倪f歸的角度來(lái)理解這件事。而且,那時(shí)也可以玩一些更復(fù)雜的遞歸游戲,比如中國(guó)特色的九連環(huán)。
非非的漢諾塔之旅大概是六七歲孩子里較常見(jiàn)的情形。但現(xiàn)在的孩子各有所長(zhǎng),不能一概而論。例如,幾乎同一時(shí)間,我又教一個(gè)比非非小五六個(gè)月的女孩子玩同樣的游戲。結(jié)果讓我很驚訝,那個(gè)名叫小北的女孩子,開(kāi)始玩三層漢諾塔時(shí)就顯得與眾不同。
玩游戲時(shí),小北不像非非那樣愛(ài)說(shuō)「我不會(huì)了」或是問(wèn)「怎么辦呀」,而是一邊思考一邊喃喃自語(yǔ)。小北很快發(fā)現(xiàn)了非常本質(zhì)的規(guī)律:要移動(dòng)某一本書(shū)到目標(biāo)椅子,就要先把這本書(shū)上面的所有書(shū)移到非目標(biāo)椅子上。有了這樣的思路,小北在移動(dòng)一本書(shū)時(shí),明顯會(huì)觀察其他書(shū)的位置,也明顯會(huì)思考目前正在做的子任務(wù)與剛才想做的主要任務(wù)之間的關(guān)系。
對(duì)一個(gè)不滿七歲的小孩子來(lái)說(shuō),這真是太厲害了。依靠強(qiáng)大的邏輯思維,小北一分鐘內(nèi)就自己解決了四層漢諾塔問(wèn)題。挑戰(zhàn)五層漢諾塔,小北只花了十幾分鐘。然后,小北不顧我的「勸阻」,執(zhí)意挑戰(zhàn)六層漢諾塔。
這一次,小北中途確實(shí)搞錯(cuò)了幾個(gè)子任務(wù)的次序,沒(méi)能用最少步數(shù)解決問(wèn)題,但最終她還是在 30 分鐘不到的時(shí)間里,把六本書(shū)都搬到了第三把椅子上!要知道,六層的漢諾塔即便是最優(yōu)解法也需要 63 步!完成任務(wù)的小北特別滿足、特別高興,開(kāi)心得像過(guò)生日一樣,還決心要繼續(xù)挑戰(zhàn)七層、八層的漢諾塔。
小北玩漢諾塔的成績(jī),似乎還說(shuō)明了另一個(gè)問(wèn)題:在理工科特別需要的邏輯思維方面,女孩子一點(diǎn)兒也不差,還有可能做得更好。工程師的世界里男孩子居多,并不是任何基因或生理層面的原因造成的,而是小孩子成長(zhǎng)過(guò)程中的環(huán)境因素乃至偏見(jiàn)使然。我曾有幸結(jié)識(shí)過(guò)幾位算法和編程特別棒的女生,她們的能力之強(qiáng),足以輕松碾壓世界上大多數(shù)程序員。
漢諾塔游戲的另一個(gè)價(jià)值,是讓只學(xué)過(guò)加減法的小孩子,直觀地感受到由「乘方」引起的數(shù)量大幅變化。三層的漢諾塔只需要 7 步就可以完成,四層的漢諾塔需要 15 步,五層的需要 31 步,六層的需要 63 步……每增加一層,需要的步數(shù)都大幅增加,這種數(shù)量變化的劇烈程度,可能是小朋友們之前從未體驗(yàn)過(guò)的。有了親身體驗(yàn),小朋友就有可能模糊地理解,為什么解決一個(gè) 64 層的漢諾塔問(wèn)題,假設(shè)每秒移動(dòng)一步,那么窮盡整個(gè)宇宙的壽命也沒(méi)法完成。
培養(yǎng)邏輯思維能力的游戲有很多,不一定上來(lái)就去玩自帶遞歸內(nèi)核的漢諾塔。編程領(lǐng)域的排序問(wèn)題改造成真實(shí)世界的游戲時(shí),小孩子會(huì)超級(jí)喜歡。最短路徑或者更普遍的搜索問(wèn)題是另一個(gè)可以變化出許多有趣形式,讓小朋友玩得很開(kāi)心的算法。
在真實(shí)世界里玩簡(jiǎn)單的蒙特卡洛算法(就是 AlphaGo 的核心算法思路),也特別具有娛樂(lè)性。有關(guān)這些算法游戲的「教學(xué)大綱」,等我回頭有空時(shí)再慢慢寫(xiě)罷。
此外,我發(fā)現(xiàn)手機(jī)上的解謎類游戲,很受小朋友的喜歡。在密室逃脫或類似的解謎游戲里,小朋友需要建立起一些簡(jiǎn)單的邏輯聯(lián)系,比如某某地方藏的密碼可以解開(kāi)某個(gè)保險(xiǎn)柜,某某圖畫(huà)上的幾個(gè)圖案正好對(duì)應(yīng)于某個(gè)復(fù)雜機(jī)關(guān)的零部件安裝方式……這些邏輯比起漢諾塔要簡(jiǎn)單一些,但孩子們可以找到更多探索的樂(lè)趣。
當(dāng)然,很多密室逃脫游戲有成人傾向,「銹湖」(Rusty Lake)系列雖好,但盡是謀殺、血腥、夢(mèng)境等情節(jié),需要大人引導(dǎo)。小朋友玩「銀河歷險(xiǎn)記」(Samorost)之類的游戲會(huì)好很多。「紀(jì)念碑谷」(Monument Valley)當(dāng)然也值得推薦。
數(shù)學(xué)世界太大,太神奇,可以陪六七歲的孩子玩的數(shù)學(xué)游戲也非常多。只舉兩個(gè)最近陪非非玩過(guò)的,與人工智能也相關(guān)的例子:一個(gè)是極值,一個(gè)是概率。
今天的人工智能,特別是其中最流行的深度學(xué)習(xí)算法,核心思想之一是對(duì)一個(gè)目標(biāo)函數(shù)進(jìn)行優(yōu)化,找到能夠讓目標(biāo)函數(shù)取值盡量小的輸入?yún)?shù)。當(dāng)然,讓小學(xué)生掌握函數(shù)以及優(yōu)化的概念,確實(shí)揠苗助長(zhǎng)了;但我們完全可以給小朋友一些簡(jiǎn)明的例子,讓小朋友知道這個(gè)世界上存在很多類似的輸入輸出緊密關(guān)聯(lián)的數(shù)學(xué)關(guān)系——在這些數(shù)學(xué)關(guān)系中,只要不斷調(diào)整輸入的數(shù)值,輸出的數(shù)值就會(huì)向極大值或極小值逼近。
我始終覺(jué)得,這種對(duì)數(shù)學(xué)現(xiàn)象的觀察、認(rèn)知乃至逐漸熟悉的過(guò)程,就像小孩子從小背詩(shī)詞歌賦一樣,重點(diǎn)在于積累「感覺(jué)」,而不在于學(xué)習(xí)多少具體的數(shù)學(xué)知識(shí),不在于學(xué)會(huì)解多少道數(shù)學(xué)題。
比如我跟非非玩的一個(gè)火柴棍游戲是這樣的:
玩游戲前,沒(méi)必要跟小朋友講解長(zhǎng)方形的面積公式,即便小朋友沒(méi)學(xué)過(guò)乘法也不要緊。只要告訴小朋友,長(zhǎng)方形的面積,就是火柴棍圍起來(lái)的方格子的數(shù)量,小朋友自然會(huì)去數(shù)方格子,會(huì)背乘法口訣的小朋友也自然會(huì)領(lǐng)悟到長(zhǎng)方形的面積等于兩邊長(zhǎng)的乘積。
12 根火柴棍是一個(gè)有趣而簡(jiǎn)單的初始狀態(tài)。用六七歲的小朋友還沒(méi)法理解的語(yǔ)言來(lái)說(shuō),我們是在求解 y=x(6–x) 這樣的方程。x 和 6-x 的取值均為正整數(shù)時(shí),y 有 3 種可能性:5、8 和 9,最小是 5,最大是 9。
讓小朋友自己去發(fā)現(xiàn)長(zhǎng)方形的不同邊長(zhǎng)組合,并沒(méi)有多么困難,而且還有擺弄火柴棍的樂(lè)趣。但是,引導(dǎo)小朋友自己去發(fā)現(xiàn)這其間的規(guī)律,就沒(méi)有看上去那么簡(jiǎn)單了。我和非非玩這個(gè)游戲時(shí),非非很快擺出了 12 根火柴棍可以拼出的三種長(zhǎng)方形,也學(xué)會(huì)了用數(shù)方塊的方法求出面積,他甚至能用簡(jiǎn)單的乘法口訣直接計(jì)算面積。
這時(shí),我問(wèn)非非什么樣的長(zhǎng)方形面積最大,什么樣的長(zhǎng)方形面積最小。非非很快發(fā)現(xiàn)了其中最明顯的規(guī)律:長(zhǎng)方形越扁,面積就越小;長(zhǎng)方形越接近正方形,面積就越大。順著非非的思路,我開(kāi)始讓非非把長(zhǎng)方形垂直的一條邊當(dāng)做重點(diǎn)觀察的對(duì)象:垂直的一條邊只有 1 根火柴時(shí),長(zhǎng)方形面積是 5;有 2 根火柴時(shí),面積增加到 8;有 3 根火柴時(shí),面積是 9,最大;有 4 根火柴時(shí),面積又縮小到了 8;有 5 根火柴時(shí),面積縮小到了 5,最小。非非覺(jué)得這個(gè)有規(guī)律的變化過(guò)程特別好玩,他仿佛看到了一個(gè)清晰的映射關(guān)系。
于是,我在紙上畫(huà)出格子。非非自己填表,把這個(gè)變化過(guò)程或者說(shuō)映射規(guī)律記錄下來(lái):
接下來(lái),將問(wèn)題變化為 16 根火柴、20 根火柴、24 根火柴時(shí),非非自己就能總結(jié)出長(zhǎng)方形邊長(zhǎng)與長(zhǎng)方形面積的所有對(duì)應(yīng)關(guān)系以及變化趨勢(shì)了。非非還特別注意到,隨著長(zhǎng)方形垂直一邊的邊長(zhǎng)由小到大,長(zhǎng)方形的面積先是從最小變化到最大,然后又從最大變化到最小。
我相信,小朋友能有機(jī)會(huì)觀察這樣的變化規(guī)律,能在類似游戲中總結(jié)輸入與輸出的映射關(guān)系,這在未來(lái)會(huì)是極有價(jià)值的一種思維財(cái)富。
概率是另一個(gè)和人工智能算法密切相關(guān)的數(shù)學(xué)領(lǐng)域。小朋友完全可以從一些最簡(jiǎn)單的概念,逐步了解和熟悉概率。比方說(shuō),小朋友玩硬幣時(shí),我就會(huì)有意跟他講,扔硬幣得到正面的概率是 50%,雖然每次扔硬幣不一定得到正面,但扔得多了,得到正面的總次數(shù)和得到反面的總次數(shù)不會(huì)相差太多。過(guò)于抽象的概率概念,比如樣本、分布、概率密度,跟小朋友肯定是講不清的。但這不妨礙我們和小朋友一起玩有趣的概率游戲。
數(shù)學(xué)系畢業(yè)的 N 老師有一天來(lái)我們家做客,其間,他跟非非提到了「正態(tài)分布」的名詞。非非就纏著我們問(wèn),到底什么是正態(tài)分布。要解釋什么是正態(tài)分布,其實(shí)可以讓小孩子自己做實(shí)驗(yàn)、自己去總結(jié)規(guī)律(這里不討論二項(xiàng)分布與正態(tài)分布的近似關(guān)系,小朋友也沒(méi)必要知道離散分布和連續(xù)分布的區(qū)別):
小朋友可以從這個(gè)小游戲中領(lǐng)悟到至少三件事:
非非的一個(gè)好習(xí)慣是看到正態(tài)分布曲線后,會(huì)追問(wèn)一句:那么正態(tài)分布有什么用?這個(gè)時(shí)候,就是我們家長(zhǎng)發(fā)揮特長(zhǎng),給小朋友當(dāng)義務(wù)講解員的時(shí)間了。我們可以跟小朋友講,世界上很多事物的分布都大致符合正態(tài)分布規(guī)律,比如學(xué)生的考試成績(jī),人的身高,恒星的大小,某種植物的生長(zhǎng)速度,等等。
當(dāng)然,不必強(qiáng)求小朋友真的理解什么是「分布」,關(guān)鍵是小朋友能經(jīng)常接觸到這些常見(jiàn)的數(shù)學(xué)概念,知道生活中哪些事物與這些概念有關(guān),未來(lái)他們?cè)趯W(xué)數(shù)學(xué)的時(shí)候,就更容易建立起個(gè)人經(jīng)驗(yàn)與科學(xué)認(rèn)知之間的緊密關(guān)聯(lián)。
非非喜歡物理和化學(xué)實(shí)驗(yàn),在學(xué)校就特愛(ài)上科學(xué)課。但他更多是從六七歲小朋友愛(ài)玩的天性出發(fā),拿這些實(shí)驗(yàn)當(dāng)游戲來(lái)喜歡,并不一定真喜歡探究其中的科學(xué)原理。家里缺乏實(shí)驗(yàn)裝備,我總要費(fèi)盡心思才能湊出一套可以做實(shí)驗(yàn)的「道具」來(lái)。
不過(guò),只要有空,我還是愿意多帶著非非玩,特別希望非非能從中體驗(yàn)到真正的科學(xué)思考過(guò)程——順便推薦一個(gè)名叫「燒杯」(BEAKER)的手機(jī) APP,非非在其中用化學(xué)試劑做出冒泡、沸騰乃至爆炸的效果,經(jīng)常歡喜得手舞足蹈。
從實(shí)驗(yàn)中記錄數(shù)據(jù),從數(shù)據(jù)中總結(jié)發(fā)現(xiàn)規(guī)律,然后根據(jù)規(guī)律做出預(yù)測(cè),再用新的實(shí)驗(yàn)來(lái)驗(yàn)證,這大概是數(shù)百年來(lái)現(xiàn)代科學(xué)發(fā)展過(guò)程的一個(gè)縮影。可是,該如何讓小朋友理解或至少了解這樣的科學(xué)思維邏輯呢?
非非喜歡聽(tīng)故事。有段時(shí)間,非非就總問(wèn)我月亮為什么繞著地球轉(zhuǎn),地球?yàn)槭裁蠢@著太陽(yáng)轉(zhuǎn)的問(wèn)題。我就從第谷建立天文臺(tái)開(kāi)始講起,講第谷在天文望遠(yuǎn)鏡出現(xiàn)以前,如何改進(jìn)天文觀測(cè)儀器,得到空前精準(zhǔn)的天體運(yùn)行觀測(cè)記錄;第谷的記錄又是如何被開(kāi)普勒完善并加以總結(jié),形成重要的行星運(yùn)動(dòng)三大定律;而牛頓又是如何從開(kāi)普勒的行星運(yùn)動(dòng)定律出發(fā),構(gòu)建出偉大的萬(wàn)有引力定律;后人如何用萬(wàn)有引力定律精準(zhǔn)預(yù)測(cè)天體運(yùn)行,甚至發(fā)現(xiàn)新天體。非非肯定搞不清萬(wàn)有引力定律的數(shù)學(xué)表達(dá),但他對(duì)定律背后的故事展現(xiàn)出了極大的興趣。
聽(tīng)多了類似的故事,他會(huì)主動(dòng)給他們班上的同學(xué)講開(kāi)普勒或是伽利略,有一次,他還在同學(xué)面前表演兩個(gè)不同重量小球同時(shí)落地的實(shí)驗(yàn)。小朋友的表現(xiàn)欲特別可愛(ài),完全可以成為他們持續(xù)探索的動(dòng)力。
我其實(shí)更希望小朋友能從這些故事當(dāng)中,體會(huì)到動(dòng)手實(shí)驗(yàn)、記錄數(shù)據(jù)、發(fā)現(xiàn)規(guī)律、預(yù)測(cè)和驗(yàn)證這個(gè)完整的科學(xué)鏈條是多么的重要。除了講故事外,我也盡量通過(guò)游戲,讓非非去體驗(yàn)「實(shí)驗(yàn)、記錄、發(fā)現(xiàn)、預(yù)測(cè)和驗(yàn)證」這個(gè)基本過(guò)程。
小朋友大多愛(ài)玩水,浮力實(shí)驗(yàn)就很容易讓小朋友上癮:
通過(guò)不斷實(shí)驗(yàn),反復(fù)記錄空水杯和溢出的水的重量,非非的實(shí)驗(yàn)記錄紙上已經(jīng)有了一個(gè)很不錯(cuò)的小表格。我鼓勵(lì)非非觀察這個(gè)表格并總結(jié)規(guī)律。他自己總結(jié)了兩點(diǎn):
接下來(lái)的講解和引導(dǎo)就非常容易了。空水杯的重量存在個(gè)別偏差,這是測(cè)量誤差,尤其是儀器誤差。溢出的水的重量變化較大,除了測(cè)量誤差外,也有部分溢出的水粘附在高瓶外壁,沒(méi)法全部收集的原因——這也解釋了為什么每次記錄的溢出的水的重量總比空水杯的重量略小。
然后,我們就可以引出浮力定律,告訴小朋友,像空水杯這樣浮在水面的靜止物體,它排開(kāi)的水的重量,正好等于它自身的重量。阿基米德發(fā)現(xiàn)浮力定律的故事嘛,肯定也是要給非非講的,順便還可以多講些阿基米德的傳說(shuō)故事,反正非非愛(ài)聽(tīng)故事甚于愛(ài)做實(shí)驗(yàn)。
此外,我們還可以用浮力定律對(duì)新的實(shí)驗(yàn)做出預(yù)測(cè),比如預(yù)測(cè)某個(gè)規(guī)則形狀的均質(zhì)漂浮物的吃水深度,然后再和小朋友一起用實(shí)驗(yàn)來(lái)驗(yàn)證。
鐘擺實(shí)驗(yàn)要比浮力實(shí)驗(yàn)復(fù)雜一些。非非對(duì)鐘擺實(shí)驗(yàn)的興趣來(lái)源于故宮的鐘表館。看到許多精密的擺鐘后,非非總在問(wèn)擺鐘為什么可以計(jì)時(shí)的問(wèn)題。這時(shí),一個(gè)標(biāo)準(zhǔn)的鐘擺實(shí)驗(yàn)應(yīng)該可以幫小朋友答疑解惑。
在家做鐘擺實(shí)驗(yàn),擺線最好用縫衣線,既足夠輕,也不會(huì)被明顯拉伸。擺錘可以用輕重不等的螺帽,體積小,方便拴線,質(zhì)心也比較明顯。擺可以提在手上,但最好是固定在橫木或者門框上。在不同條件下,用手機(jī)做定時(shí)器,記錄 30 秒內(nèi)鐘擺的擺動(dòng)次數(shù)(一來(lái)一回記錄為一次)。30 秒的時(shí)長(zhǎng)既容易記錄次數(shù),也不會(huì)消磨小朋友的耐心。
鐘擺實(shí)驗(yàn)的關(guān)鍵在于每次實(shí)驗(yàn)的條件設(shè)置和數(shù)據(jù)記錄的方法。一定要和小朋友討論三件事:
通過(guò)這些討論,愛(ài)動(dòng)腦、愛(ài)動(dòng)手的小朋友自然會(huì)學(xué)到畫(huà)表格、記數(shù)據(jù)的方法。在家長(zhǎng)提示下,小朋友也能了解到,只有每次改變一個(gè)初始條件,我們才比較容易判斷實(shí)驗(yàn)結(jié)果的變與不變到底與哪個(gè)初始條件有關(guān)。
非非對(duì)鐘擺實(shí)驗(yàn)的興趣還不錯(cuò),他可以自己總結(jié)出:擺錘的起始高度與實(shí)驗(yàn)結(jié)果基本無(wú)關(guān);擺錘的重量與實(shí)驗(yàn)結(jié)果基本無(wú)關(guān);擺線的長(zhǎng)度越長(zhǎng),同一時(shí)間段內(nèi)擺動(dòng)的次數(shù)就越少,或者說(shuō),擺動(dòng)一次要花的時(shí)間就越長(zhǎng);非非甚至通過(guò)不斷改變擺線長(zhǎng)度,找到了擺動(dòng)周期接近 1 秒、接近 2 秒的不同長(zhǎng)度值——他很快想到,這幾種擺線長(zhǎng)度是比較適合用來(lái)驅(qū)動(dòng)擺鐘的。
一般來(lái)說(shuō),小朋友能準(zhǔn)確記錄數(shù)據(jù),并從中發(fā)現(xiàn)上面這些簡(jiǎn)單規(guī)律,就已經(jīng)達(dá)到了游戲的目的。但我還是想讓非非從鐘擺實(shí)驗(yàn)中,直觀體會(huì)到「實(shí)驗(yàn)、記錄、發(fā)現(xiàn)、預(yù)測(cè)和驗(yàn)證」的完整科學(xué)過(guò)程。
于是,我告訴非非,科學(xué)家很早就從大量鐘擺實(shí)驗(yàn)的數(shù)據(jù)中,總結(jié)出了鐘擺的數(shù)學(xué)公式。雖然非非目前還看不懂包含平方根計(jì)算符的公式,但我可以用計(jì)算器幫他計(jì)算,并對(duì)一個(gè)全新的擺做出準(zhǔn)確預(yù)測(cè)——擺的公式以及完整討論請(qǐng)參考維基百科。
我給非非看了預(yù)測(cè) 16 厘米(忘記當(dāng)時(shí)為什么要選擇 16 厘米的擺長(zhǎng)了,大概是要選一個(gè)看上去不大好預(yù)測(cè)的數(shù)字吧)長(zhǎng)的擺在 30 秒內(nèi)的擺動(dòng)次數(shù)的全部計(jì)算過(guò)程。我的計(jì)算結(jié)果是約等于 37 次。然后我和非非仔細(xì)調(diào)整了擺的長(zhǎng)度,用手機(jī)計(jì)時(shí),開(kāi)始實(shí)驗(yàn)……當(dāng)非非發(fā)現(xiàn)最終的計(jì)數(shù)結(jié)果真的是 37 次時(shí),他確實(shí)是有一點(diǎn)點(diǎn)小驚訝的。這大概是第一次親眼見(jiàn)證科學(xué)的神奇力量時(shí),小朋友都會(huì)有的感覺(jué)吧。
與理工類思維講究邏輯完整性不同,語(yǔ)言文字相關(guān)的技能更強(qiáng)調(diào)形象思維、情感共鳴、個(gè)人體驗(yàn)和審美認(rèn)知。小朋友要提高語(yǔ)言能力,最重要的也許不是游戲,而是盡可能多的閱讀、背誦、表達(dá)和寫(xiě)作。其實(shí),盡可能豐富生活體驗(yàn)都會(huì)比玩游戲重要得多。但僅從增加樂(lè)趣的角度出發(fā),好的游戲還是可以更多吸引小朋友的注意,潛移默化地增強(qiáng)他們對(duì)語(yǔ)言、音韻的認(rèn)知。
非非的閱讀本來(lái)就特別受興趣驅(qū)動(dòng),比如從小背古詩(shī),他就特別喜歡背誦戰(zhàn)爭(zhēng)相關(guān)的詩(shī)句,什么「雪暗凋旗畫(huà)、風(fēng)多雜鼓聲」「黃沙百戰(zhàn)穿金甲,不破樓蘭終不還」之類,后來(lái)又逐漸延伸到歷史故事相關(guān)的題材,比如「此地別燕丹,壯士發(fā)沖冠」「救趙揮金錘,邯鄲先震驚」之類,但明顯不喜歡田園、山水、愛(ài)情、家國(guó)、說(shuō)理等其他類型。
擴(kuò)展到對(duì)古今文類的偏好,非非就只愛(ài)讀古文或貌似古奧難懂的東西,較少對(duì)現(xiàn)代的優(yōu)美文字產(chǎn)生興趣。比如,非非看《蘭亭集序》的帖子,會(huì)央大人完整讀給他聽(tīng)并講解文意,發(fā)現(xiàn)家里有豎排的佛經(jīng)、碑銘之類,也能假模假樣用小楷筆抄寫(xiě)大半天。這種傾向性的愛(ài)好肯定和小朋友的年齡階段,以及小朋友追求特立獨(dú)行的性格有關(guān),未來(lái)也多半會(huì)三兩年一變,不具有可延續(xù)性。但這個(gè)階段,正好可以利用小朋友的心理特點(diǎn),多跟他玩些與古詩(shī)文相關(guān)的游戲,
隨著非非在一年級(jí)學(xué)到了逐漸完整的拼音知識(shí),我開(kāi)始跟非非玩「對(duì)對(duì)聯(lián)」的游戲。當(dāng)然,我會(huì)告訴非非,「對(duì)對(duì)聯(lián)」是個(gè)專深的學(xué)問(wèn)。今天大街上見(jiàn)到的百分之九十以上的對(duì)聯(lián)都不合對(duì)仗的規(guī)矩,不能叫對(duì)聯(lián),岳云鵬在相聲里說(shuō)的「平仄平仄平平仄,仄平仄平仄仄平」更是聲律外行的杜撰。現(xiàn)在跟非非玩的游戲,遠(yuǎn)達(dá)不到「對(duì)對(duì)聯(lián)」的程度,我其實(shí)只是借了「對(duì)對(duì)聯(lián)」的名義,玩漢字的平仄與音韻游戲。
比如,我和非非玩單字的平仄相對(duì)、意義相類。我說(shuō)「貓」,非非就說(shuō)「狗」,兩個(gè)字都是動(dòng)物,又能平聲對(duì)仄聲,算是對(duì)仗成功。平仄的要求也以今韻為主,陰平陽(yáng)平為平,上聲去聲為仄,小朋友僅憑學(xué)校里學(xué)到的拼音知識(shí),就能很快掌握,玩起來(lái)既容易又有趣。好玩的詞類包括動(dòng)物、水果、天氣、動(dòng)作、身體部位等。小朋友熟練后,可以擴(kuò)展到兩個(gè)字、三個(gè)字的情況。
再進(jìn)一步,我們玩四個(gè)字、五個(gè)字、七個(gè)字的押韻游戲,只求字?jǐn)?shù)相同且末字押韻,不求工整優(yōu)美。當(dāng)然,需要跟小朋友事先解釋什么是押韻。小朋友學(xué)過(guò)拼音,「韻母相同就是押韻」的簡(jiǎn)單規(guī)則已然夠用,適當(dāng)補(bǔ)充一些現(xiàn)代漢語(yǔ)拼音方案中哪些韻母可以通押的情況當(dāng)然更好。
押韻游戲玩起來(lái)幾乎笑聲不斷。比如,我說(shuō)「春色滿園」,非非會(huì)說(shuō)「吃了大蒜」;我說(shuō)「一夜北風(fēng)緊」,非非會(huì)說(shuō)「前方有樹(shù)林」;我說(shuō)「不慚世上英」,非非會(huì)說(shuō)「青菜成了精」(因?yàn)樗麗?ài)讀的一本書(shū)叫《一園青菜成了精》);我說(shuō)「白云一片去悠悠」,非非會(huì)說(shuō)「摔了一個(gè)大跟頭」……之后可以進(jìn)一步提高難度,比如要求平聲押平聲,仄聲押仄聲,或者要求成語(yǔ)對(duì)成語(yǔ),俗語(yǔ)對(duì)俗語(yǔ),詩(shī)詞對(duì)詩(shī)詞。
等非非再大些,類似的文辭、音韻類的游戲,自然可以愈來(lái)愈接近真正的對(duì)聯(lián)或詩(shī)文規(guī)則。比如,讓他嘗試用今韻寫(xiě)簡(jiǎn)單的格律詩(shī),或者,和他一起玩詩(shī)謎、聯(lián)句的游戲。不過(guò),規(guī)則、法度之類到底是末節(jié),重要的還是在玩游戲中,讓小朋友和文字、音韻成為朋友,提高對(duì)字義、字音的敏感度。
非非在古今文類、甚至中西文類上的喜好,將來(lái)一定會(huì)隨著年齡增長(zhǎng)而有改變。將來(lái),要學(xué)習(xí)白話文、英文之類活的語(yǔ)言,肯定還是得從多讀、多背優(yōu)美文字,以及多說(shuō)、多寫(xiě)入手,然后再用有趣的游戲形式來(lái)配合、呼應(yīng)。
其實(shí),我一直想設(shè)計(jì)一些與文字風(fēng)格、文學(xué)審美相關(guān)的小游戲,可以是手游,也可以是桌游,還可以和人工智能特別是計(jì)算機(jī)寫(xiě)作算法相結(jié)合。比方說(shuō),在當(dāng)代文辭生動(dòng)的歌曲中,將三首歌的歌詞打散,讓小朋友像拼圖一樣將詞句重新拼合,并計(jì)算拼合結(jié)果與原歌詞的重合度;讓小朋友為《哈利·波特》系列的某個(gè)段落續(xù)寫(xiě)英文小故事,并讓電腦來(lái)評(píng)價(jià)這段新文字是否與原作風(fēng)格相似;讓小朋友與計(jì)算機(jī)寫(xiě)作程序一起互相啟發(fā),共同完成一個(gè)人物角色與一個(gè)故事情節(jié)的創(chuàng)作……
坦白地說(shuō),非非小朋友的邏輯思維能力和對(duì)新知識(shí)的接受速度,與同齡小朋友的平均水平比較并沒(méi)有明顯差異。但非非特別愿意按照自己的意愿來(lái)創(chuàng)新,也特別愿意向別人展示自己的作品或自己的知識(shí)積累,哪怕他的展示幼稚可笑。這兩點(diǎn)從他上幼兒園起就一直存在,明顯有別于其他小朋友。我覺(jué)得這是好事,也許需要引導(dǎo),但更多的情況下,我還是盡量在游戲中滿足他的創(chuàng)造欲和表現(xiàn)欲。
那天吃完飯,我和媽媽一起陪非非玩「我來(lái)表演你來(lái)猜」的游戲。我出題,非非表演,媽媽猜。一開(kāi)始,我們玩簡(jiǎn)單的,比如猜手機(jī)里的表情包,或者猜體育運(yùn)動(dòng),像游泳、滑雪之類。但玩了幾次覺(jué)得不過(guò)癮,我們就想起來(lái)一個(gè)又難又好玩的——猜故宮里的地名:
我們發(fā)現(xiàn),這個(gè)特好玩,也特容易激發(fā)小朋友的創(chuàng)造激情。非非總會(huì)從想不到的角度來(lái)表演故宮里的某個(gè)地方。比方說(shuō),我出題「御花園」,小朋友居然在沙發(fā)上表演了一只睡覺(jué)的貓,因?yàn)榧o(jì)錄片《上新了·故宮》里專門講過(guò)御花園的御貓,當(dāng)然這次媽媽沒(méi)有猜到了;我出題「角樓」,小朋友就用積木搭個(gè)示意結(jié)構(gòu),特別像,媽媽也猜到了;我出題「軍機(jī)處」,小朋友就用手在眼前比劃了一副眼鏡,因?yàn)檐姍C(jī)處的展覽陳列里,確實(shí)展出了一副當(dāng)時(shí)用的眼鏡,媽媽居然也猜到了……
這種形式,還可以變化出更多好玩的題目。我們和非非玩過(guò)猜英文字母(必須用身體表演英文字母的形狀),猜小朋友去過(guò)的一個(gè)城市(比如紐約、舊金山、上海),猜一句包含了具體意象的古詩(shī)詞(比如「醉里挑燈看劍」,或者「舉杯邀明月,對(duì)影成三人」),等等。
小朋友在這類游戲里展示出來(lái)的表現(xiàn)欲,以及讓人意想不到的創(chuàng)造性思維,都彌足珍貴。如果能用手機(jī)錄像錄下來(lái),做個(gè)精彩片段的剪輯,過(guò)幾年再給小朋友看時(shí),一定特別有意思。
另有一次,非非在玩書(shū)里的迷宮游戲時(shí),因?yàn)殡y度不高,明顯提不起興趣。我就拿出紙筆,教他怎么設(shè)計(jì)一個(gè)好玩的迷宮。當(dāng)然,我自己的思路還是受到傳統(tǒng)迷宮形態(tài)的影響,出自我手的迷宮圖案大概長(zhǎng)這個(gè)樣子:
可沒(méi)想到,非非看了我的設(shè)計(jì)后,就特別不以為然。非非堅(jiān)決反對(duì)用這種方方正正的方法來(lái)畫(huà)迷宮,他覺(jué)得,好的迷宮必須是有個(gè)性、有故事的。我有些詫異,不知道他在琢磨什么鬼點(diǎn)子。結(jié)果,他特別投入地畫(huà)了好多張紙,每張紙上都有一個(gè)十分特殊的迷宮設(shè)計(jì)稿。
他的迷宮有的曲曲彎彎,有的像室內(nèi)地圖,還到處設(shè)置了水池、火坑、暗門等機(jī)關(guān)。走他的迷宮里時(shí),如果不注意走到機(jī)關(guān)處,他就會(huì)勝利般地大叫「掉水池里啦」或者「被火燒啦」,他還會(huì)得意地提醒你「要把這扇暗門打開(kāi)才能走過(guò)去」。下圖只是非非設(shè)計(jì)的諸多「另類」迷宮中的一個(gè)。
其實(shí),你很難說(shuō)非非設(shè)計(jì)的到底是迷宮,還是他心里想講的一個(gè)童話故事。我這個(gè)設(shè)計(jì)迷宮的游戲,徹底被小朋友帶到了一個(gè)全新的節(jié)奏上。我喜歡這種被帶偏的感覺(jué)。小朋友在這種時(shí)候所展示出的自信心、自我滿足感都是我們難以想象的。我猜,從這種可以自由發(fā)揮的游戲中建立的滿足感,未來(lái)也許會(huì)支撐著小朋友在不同類型的娛樂(lè)、學(xué)習(xí)和工作中,不斷嘗試全新的視角,不斷體驗(yàn)全新的思維方式罷。
游戲的本質(zhì)是思考方式訓(xùn)練
小朋友會(huì)花最多的時(shí)間來(lái)玩游戲,而好的游戲,其實(shí)都是最好的思考方式的訓(xùn)練過(guò)程。
要讓小朋友在成長(zhǎng)過(guò)程中學(xué)到更多的稀缺性技能,上面談到的幾類游戲是遠(yuǎn)遠(yuǎn)不夠的,僅僅由家長(zhǎng)來(lái)陪孩子玩,當(dāng)然也不是好的解決方案。其實(shí),哪個(gè)孩子不都是在真實(shí)的世界中摸爬滾打成長(zhǎng)起來(lái)的?從家長(zhǎng)那里,從同學(xué)那里,從老師那里,從朋友那里,孩子可以獲得各不相同的體驗(yàn),經(jīng)歷不同的喜怒哀樂(lè),鍛煉不同的技能點(diǎn)。家長(zhǎng)陪孩子玩游戲這件事肯定重要,但也肯定沒(méi)有重要到必須像上課那樣定時(shí)定量的地步。
所以,我的建議也很務(wù)實(shí):
人工智能時(shí)代并不虛幻,人類在機(jī)器面前也并非一無(wú)是處。也許,我們內(nèi)心如何定義「人類」,我們的孩子就會(huì)如何長(zhǎng)大。
一邊玩游戲,一邊挑戰(zhàn)編程難題。Coding games支持包括PHP、C、JavaScript在內(nèi)的20多種編程語(yǔ)言。用戶界面功能強(qiáng)大,可以定制。
例如,你可以選擇你的代碼編輯器的風(fēng)格:Emacs、Vim、Classic。
如果你想提升編程技能,玩Coding games是一種有趣的途徑。
網(wǎng)址:www.codingame.com
CodeCombat 是一款網(wǎng)頁(yè)編程游戲。這款編程游戲借鑒了游戲的很多設(shè)計(jì)元素,游戲劇情十分豐富。
當(dāng)你打開(kāi)CodeCombat網(wǎng)站,你不會(huì)覺(jué)得這是一個(gè)讓你看不懂的代碼學(xué)習(xí)網(wǎng)站,因?yàn)樗木W(wǎng)站外觀看起來(lái)就像是一個(gè)魔獸爭(zhēng)霸風(fēng)格的線上游戲,而且當(dāng)你實(shí)際玩玩看,你會(huì)發(fā)現(xiàn)過(guò)程真的就是英雄要去打怪、尋寶與解謎,只是搭配了程序語(yǔ)言的學(xué)習(xí)。
CodeCombat能夠?qū)W習(xí) Python、JavaScript、Lua、CoffeeScript、Clojure 等不同程序語(yǔ)言,這些語(yǔ)言能夠運(yùn)用到游戲設(shè)計(jì)、網(wǎng)頁(yè)應(yīng)用、App 的開(kāi)發(fā)上。
CodeCombat網(wǎng)址:cn.codecombat.com
極客戰(zhàn)記(中國(guó)版CodeCombat)網(wǎng)址:codecombat.163.com
如果你想學(xué)習(xí)JavaScript,那Screeps是一個(gè)很好的選擇,Screeps 是一個(gè)為 JavaScript 程序員準(zhǔn)備的大型多人在線游戲(MMO)。
這個(gè)游戲是一個(gè)開(kāi)放的策略游戲,游戲中你控制的單位被稱為“creeps”,它可以幫你獲得資源、建立自己的領(lǐng)地等等。作為一個(gè)多人在線游戲,游戲中你的creeps會(huì)被其他玩家的creeps包圍。
網(wǎng)址:screeps.com
Check iO 是一個(gè)基于瀏覽器的游戲,你需要使用 Python 或 JavaScript 來(lái)解決問(wèn)題才能將游戲進(jìn)行下去(需要登錄)。
網(wǎng)址:checkio.org
顧名思義,這個(gè)網(wǎng)站讓你通過(guò)玩游戲來(lái)學(xué)習(xí) Vim。
網(wǎng)址:vim-adventures.com
Cyber-dojo是一個(gè)提供給程序員們練習(xí)寫(xiě)程序的地方。支持 JavaScript、Java、Python、PHP、Ruby 等語(yǔ)言。
網(wǎng)址:www.cyber-dojo.org/
源代碼:
https://github.com/JonJagger/cyber-dojo
CodeMonkey 是一款非常富有童趣的網(wǎng)頁(yè)編程游戲,玩家通過(guò)編程向怪獸小猴子傳達(dá)指令,幫助小猴子吃到香蕉就可以過(guò)關(guān)了。
CodeMonkey 以游戲闖關(guān)的方式進(jìn)行教學(xué),總共有300多個(gè)關(guān)卡,涉及到編程的各種概念。
網(wǎng)址:www.playcodemonkey.com
電梯編程游戲,需要一步步解決問(wèn)題過(guò)關(guān)。比如說(shuō)第一關(guān)是在 60 秒內(nèi)運(yùn)輸 15 個(gè)人。(編程語(yǔ)言為JavaScript)
網(wǎng)址:play.elevatorsaga.com/
代碼:
https://github.com/magwo/elevatorsaga
在戰(zhàn)斗中進(jìn)行學(xué)習(xí)。和其他人一起在真實(shí)的編程挑戰(zhàn)中提升技巧,支持JavaScript、Python、C#、Java、Python等語(yǔ)言(支持的語(yǔ)言見(jiàn)下圖)。
網(wǎng)址:www.codewars.com
Ruby Quiz是一個(gè)面向Ruby程序員的每周編程挑戰(zhàn)項(xiàng)目,目前有156個(gè)測(cè)驗(yàn)項(xiàng)目。
網(wǎng)址:rubyquiz.com/
Git-game是一個(gè)基于終端的游戲,它用來(lái)教授 git 中的那些非常酷的功能。游戲的主題內(nèi)容是搜尋,通過(guò) git 命令來(lái)找到線索,解開(kāi)謎題。
網(wǎng)址:www.git-game.com
hacker.org 挑戰(zhàn)賽是一系列的拼圖、敲磚塊、測(cè)試和智力題,用來(lái)測(cè)試你的黑客能力。要通過(guò)這一系列的考驗(yàn),你需要學(xué)會(huì)解密、編碼、滲透等等技能,揭開(kāi)重重迷霧。
網(wǎng)址:www.hacker.org/
Code Hunt 是一個(gè)由Microsoft Research開(kāi)發(fā)的 HTML5 科幻主題游戲。在這個(gè)游戲中,你扮演一個(gè)代碼獵人,負(fù)責(zé)修復(fù)代碼,并使它它返回預(yù)期的結(jié)果。Code Hunt支持 Java 和 C# 兩種語(yǔ)言。你可以學(xué)習(xí)到包括算法、循環(huán)和條件表達(dá)式等編程概念。
網(wǎng)址:www.codehunt.com
在 FightCode 中,通過(guò)編寫(xiě) JavaScript 代碼,你可以創(chuàng)建一個(gè)能夠擊敗其他玩家機(jī)器人的機(jī)器人。
網(wǎng)址:http://fightcode.io
Human Resource Machine 是一款非常有意思的移動(dòng)端游戲。這款游戲由粘粘世界(World of Goo)的設(shè)計(jì)者和制作小小煉獄(Little Inferno)的團(tuán)隊(duì)共同制作,游戲雖是走解謎路線,但玩法相當(dāng)新穎:玩家將扮演一個(gè)從基層做起的員工,需要通過(guò)指令代碼來(lái)編寫(xiě)一條條程序,完成每個(gè)階段的任務(wù),最終走上職場(chǎng)巔峰。
主人公需要將郵件按照要求進(jìn)行分發(fā)。游戲注重計(jì)算機(jī)硬件實(shí)現(xiàn)方面的技術(shù)。在游戲中非常形象的表現(xiàn)出了內(nèi)存,寄存器,輸入輸出等概念,以及如何利用這些硬件來(lái)實(shí)現(xiàn)基本的運(yùn)算、排序等功能。
這款游戲界面十分有意思,畫(huà)風(fēng)清奇,任務(wù)具有較大的挑戰(zhàn)性,適合有一定編程基礎(chǔ)或者年齡稍大的孩子玩。
網(wǎng)址:tomorrowcorporation.com
End
其他類似的編程游戲網(wǎng)站
CodeChef?:在這里你可以解決實(shí)際問(wèn)題、參加不同的比賽,這些比賽每月都會(huì)進(jìn)行。
Pex for fun?:這是微軟開(kāi)發(fā)的一個(gè)游戲,在這個(gè)游戲中你需要和其他的程序員進(jìn)行比拼。而代碼就是你的武器。
Rankk?:你需要解決一系列由易到難的問(wèn)題。這個(gè)游戲是對(duì) Pyramid 游戲的復(fù)刻,Pyramid里面有很多邏輯和數(shù)學(xué)問(wèn)題。
TopCoder?:在這個(gè)游戲里你不光可以解決問(wèn)題,還可以獲取真金白銀。來(lái)自全世界知名IT公司的程序員在這里互相挑戰(zhàn),為的就是贏得他們的獎(jiǎng)品。
Google Code Jam?:Google 大賽上已經(jīng)解決的算法問(wèn)題。在這里你可以自己試一試。
Python Challenge:玩家可以通過(guò) Python 編程解決問(wèn)題并提升等級(jí)。
Lumosity?:一組能夠訓(xùn)練大腦的游戲,由科學(xué)家和游戲設(shè)計(jì)師一同開(kāi)發(fā)。
Algorithm Geeks?:一個(gè)交流討論算法的 Google 群組。
CodeKata?:妙趣橫生的編程問(wèn)題。
LessThanDot?:一個(gè)專門論壇,程序員在這里發(fā)布一些比較困難的編程挑戰(zhàn)。
The Daily WTF?:類似BYOD(Bring Your Own Device)模式,不過(guò)這里是BYOD(Bring Your Own Code)程序員們編寫(xiě)他們自己的代碼片段放在這里,用來(lái)解決一些比較困難的問(wèn)題。
Peking University JudgeOnline for ACIP/ICPC?:這里包含了不同比賽中涉及到的不同的問(wèn)題。你可以實(shí)時(shí)的解決問(wèn)題并且查看結(jié)果,你的答案也會(huì)被驗(yàn)證是否正確。
University of Valladolid Online Judge?:與北京大學(xué)OJ平臺(tái)類似,但是包含了不同的問(wèn)題。
Programming Praxis:這個(gè)博客每周都會(huì)出一些新的編程問(wèn)題。
Project Euler?:包含了很多復(fù)雜的數(shù)學(xué)問(wèn)題,這讓發(fā)燒友們感到非常開(kāi)心。
4Clojure?:在這里你可以通過(guò)解決一些不同難易程度的問(wèn)題來(lái)學(xué)習(xí) Clojure 。
Prolog Problems?:你可以在這里練習(xí)邏輯編程。
Codingbat?:由很多 Java 和 Python 的習(xí)題(難度各有不同)。
Sphere Online Judge?:各種各樣的編程問(wèn)題。
Rosalind?:通過(guò)解決實(shí)際問(wèn)題來(lái)學(xué)習(xí)算法和生物信息學(xué)。
LeetCode?:這個(gè)網(wǎng)站是為了幫助程序員準(zhǔn)備面試而創(chuàng)建的。在這里你可以找到不同領(lǐng)域的典型問(wèn)題。
Career Cup?:程序員面試時(shí)最容易被問(wèn)到的真實(shí)問(wèn)題。
Kodable:Kodable是一款適用于 5 歲及以上兒童的教育型 iPad 游戲,適合為兒童進(jìn)行編程啟蒙。
Lightbot :Lightbot是一款移動(dòng)端游戲,玩家通過(guò)控制機(jī)器人的移動(dòng)在固定位置點(diǎn)亮燈泡。
Box Island:Box Island 是一款經(jīng)典且屢獲殊榮的移動(dòng)端編程冒險(xiǎn)游戲,這款游戲在為孩子們帶來(lái)令人興奮的冒險(xiǎn)體驗(yàn)的同時(shí), 向他們介紹編程的基礎(chǔ)知識(shí)。
Tips:看了小編總結(jié)的這么多游戲,趕快運(yùn)行一個(gè)游戲體驗(yàn)一下編程的樂(lè)趣吧!
來(lái)源:http://rrd.me/ehmF3
:-D 搜索微信號(hào)(ID:芋道源碼),可以獲得各種 Java 源碼解析、原理講解、面試題、學(xué)習(xí)指南。
:-D 并且,回復(fù)【書(shū)籍】后,可以領(lǐng)取筆者推薦的各種 Java 從入門到架構(gòu)的 100 本書(shū)籍。
:-D 并且,回復(fù)【技術(shù)群】后,可以加入專門討論 Java、后端、架構(gòu)的技術(shù)群。
來(lái)吧,騷年~
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。