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