來(lái)源:JHHY菁華浩揚(yáng) 作者:王有財(cái) 2018-06-17 10:17:27
我喜歡用Python,可是我心里總是隱隱約約覺(jué)得,Python不是一個(gè)給小孩子入門(mén)的計(jì)算機(jī)語(yǔ)言。當(dāng)然,我也不想讓一個(gè)孩子硬著頭皮去學(xué)習(xí)C和C++。想來(lái)想去,程序設(shè)計(jì)可能是無(wú)法快速入門(mén)的。想靠著十節(jié)八節(jié)Python程序設(shè)計(jì)課程,就讓孩子去研究人工智能,為申請(qǐng)大學(xué)加分的想法,是不切實(shí)際的。 在我看來(lái),學(xué)習(xí)程序設(shè)計(jì),還得從長(zhǎng)計(jì)議。要是我列一個(gè)課程表。第一個(gè)必修課就是數(shù)學(xué)。理解程序設(shè)計(jì)的一個(gè)基本需求就是,孩子得理解數(shù)學(xué)中函數(shù)的定義。不管是面向?qū)ο筮是面向過(guò)程,我們都會(huì)把相關(guān)的一組計(jì)算機(jī)操作組織到子程序(或者叫做函數(shù))里。理解了數(shù)學(xué)中的函數(shù),孩子們就可以學(xué)習(xí)面相過(guò)程的程序設(shè)計(jì)了。能寫(xiě)出幾十個(gè)子程序(函數(shù))構(gòu)成的程序,才有學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)。有了一定的數(shù)學(xué)基礎(chǔ),第二個(gè)必修課就是計(jì)算機(jī)操作。好多孩子會(huì)在計(jì)算機(jī)上打游戲,卻從來(lái)沒(méi)有在計(jì)算機(jī)上發(fā)過(guò)一封電子郵件。編程的一個(gè)基礎(chǔ)就是,計(jì)算機(jī)打字。孩子正確使用鍵盤(pán)和鼠標(biāo),也得點(diǎn)功夫。學(xué)會(huì)操作計(jì)算機(jī),就可以真正接觸程序設(shè)計(jì)了。好多老師,從集成開(kāi)發(fā)環(huán)境(IDE)(比如說(shuō)Eclipse)開(kāi)始教授程序設(shè)計(jì)。不管學(xué)習(xí)Java還是Python,都是按照老師的指導(dǎo),在IDE里輸入程序,然后用鼠標(biāo)按一下按鈕,結(jié)果一下就跑出來(lái)了。一旦離開(kāi)了IDE,孩子們一臉茫然不知道那里可以寫(xiě)程序,更不知道程序怎樣變成可執(zhí)行代碼,并運(yùn)行處結(jié)果。要是我來(lái)上課,一定從最簡(jiǎn)單的文本編輯工具開(kāi)始。我會(huì)教孩子怎樣打開(kāi)命令行窗口(Terminal),怎樣啟動(dòng)文字編輯器,怎樣輸入程序,怎樣保存代碼,然后怎樣編譯程序,最后怎樣執(zhí)行程序。
到底哪一種計(jì)算機(jī)語(yǔ)言最適合初學(xué)的孩子呢?我想我會(huì)選擇Java。Java在語(yǔ)言要素和語(yǔ)法上,繼承了C和C++,基本上就是一個(gè)C++的簡(jiǎn)化版。談到課程設(shè)置,我想我會(huì)從數(shù)據(jù)類型,條件判斷(IF語(yǔ)句),和循環(huán)結(jié)構(gòu)開(kāi)始,讓孩子了解一個(gè)程序的基本構(gòu)造:數(shù)據(jù),判斷,和循環(huán)。我不會(huì)著急讓孩子學(xué)習(xí)類和面向?qū)ο蟮母拍。相反,我?huì)用半個(gè)學(xué)期,甚至一個(gè)學(xué)期的時(shí)間,讓孩子學(xué)習(xí)面向過(guò)程的程序設(shè)計(jì)的理念。也就是說(shuō),怎樣把一個(gè)復(fù)雜的問(wèn)題分解成若干步驟,每一個(gè)步驟又通過(guò)一個(gè)Java的函數(shù)來(lái)實(shí)現(xiàn)。讓孩子們學(xué)會(huì),怎樣把這些函數(shù)組織在一起,解決他們的問(wèn)題。
想想看,我們?yōu)槭裁匆獙?xiě)程序?寫(xiě)程序的目的就是為了解決問(wèn)題。在寫(xiě)程序之前,我們腦子里要形成一個(gè)解決方案。這個(gè)方案,往往包括多個(gè)前后銜接的步驟,甚至有條件判斷,還有重復(fù)性的步驟。 這些步驟,都可以通過(guò)程序中的函數(shù)來(lái)實(shí)現(xiàn)。用計(jì)算機(jī)求解問(wèn)題,真正的難點(diǎn)不是寫(xiě)程序的過(guò)程,而是開(kāi)發(fā)問(wèn)題的解決方案。計(jì)算機(jī)代碼,只不過(guò)是解決方案的計(jì)算機(jī)實(shí)現(xiàn)。用上半個(gè)學(xué)期,甚至一個(gè)學(xué)期,教授孩子怎樣去利用計(jì)算機(jī),探討問(wèn)題的解決方案,所用時(shí)間其實(shí)并不長(zhǎng)。家長(zhǎng)呢,應(yīng)該認(rèn)識(shí)到這一點(diǎn)。教授孩子寫(xiě)程序,其實(shí)是教授孩子用計(jì)算機(jī)來(lái)解決問(wèn)題。面對(duì)相抵復(fù)雜的問(wèn)題,如果孩子們可以設(shè)計(jì)解決方案,可以寫(xiě)出包括十幾個(gè)甚至更多的函數(shù)的代碼,那說(shuō)明孩子們可以進(jìn)一步提高了。我們可以隨后教授孩子,怎樣以數(shù)據(jù)為中心,進(jìn)行面型對(duì)象的程序設(shè)計(jì),開(kāi)發(fā)更大規(guī)模的軟件了。 當(dāng)然這是后話,對(duì)于初學(xué)者的父母,完全不需要上來(lái)就考慮面向?qū)ο蟆?br />
Python要不要學(xué)?要!不過(guò)是在孩子們完全理解了面向過(guò)程程序設(shè)計(jì)理念之后。有了這樣的基礎(chǔ),即便不用Python里面的“類”,孩子們也可以寫(xiě)出像模像樣的Python程序。如果孩子有了面向?qū)ο蟮幕A(chǔ),那么就可以更加容易地理解Python中的元組,列表,字典,還有集合等數(shù)據(jù)結(jié)構(gòu)以及相關(guān)的操作(或者說(shuō)函數(shù))了。如果孩子有興趣,也完全有可能應(yīng)用Python的類(class)的組織代碼,開(kāi)發(fā)出復(fù)雜的軟件。有了程序設(shè)計(jì)基礎(chǔ),孩子們可以更加深入地理解并有效地利用共享的Python代碼庫(kù)。那時(shí)候,他們用共享代碼開(kāi)發(fā)出的電子郵件收發(fā)工具,不再是簡(jiǎn)單地模仿。孩子們可以設(shè)置甚至改造共享代碼,把他們的有趣的想法實(shí)現(xiàn)到軟件工具里。我相信,經(jīng)歷這樣的過(guò)程,孩子們可以真正地了解計(jì)算機(jī)以及程序設(shè)計(jì)。深入掌握,必然幫助他們觸類旁通,以后學(xué)習(xí)人工智能,自然會(huì)有堅(jiān)實(shí)的基礎(chǔ)。
最后一句話:Python便捷強(qiáng)大,適合急功近利式的軟件開(kāi)發(fā),未必適合孩子們?nèi)腴T(mén)學(xué)習(xí)。
相關(guān)推薦:
小升初試題、期中期末題、小學(xué)奧數(shù)題
盡在奧數(shù)網(wǎng)公眾號(hào)
歡迎使用手機(jī)、平板等移動(dòng)設(shè)備訪問(wèn)幼教網(wǎng),幼兒教育我們一路陪伴同行!>>點(diǎn)擊查看