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