轉(zhuǎn)眼間,孩子學(xué)習(xí)Python 已經(jīng)有一年時間了,在這一年時間中,他主要學(xué)習(xí)了Python 的基本語法 和簡單的游戲編程,做了一個打飛機的游戲項目。老婆看到孩子在學(xué)習(xí)游戲編程,淡淡的問了句:“這游戲編程對孩子未來升學(xué)擇校有幫助嗎?”。我立刻領(lǐng)會了領(lǐng)導(dǎo)的精神,開始尋找一些比較有含金量的比賽,準備后續(xù)以比賽為目標(biāo),逆向制定孩子學(xué)習(xí)內(nèi)容。
說到編程比賽,這兩年由于國家不斷的加強青少年人工智能教育,所以這類編程比賽如雨后春筍般,隔段時間就能看到一個新的,說實話,這類比賽都還“太年輕”,無從判斷哪個比賽更有含金量。 國內(nèi)的編程比賽,業(yè)內(nèi)公認最有價值的還要數(shù)NOI(信息學(xué)國家奧林匹克競賽),這個比賽主要是為了選拔參加國際信息奧林匹克的人才,考試內(nèi)容以算法為主,非常有含金量。 前幾年,只要能夠得到省級別的獎項,就能拿到名牌大學(xué)的錄取名額,這兩年教育部進行了管制,據(jù)說只能加一定的分數(shù),不允許直接錄取了。但這并不妨礙比賽的專業(yè)性,真能在這個比賽中獲獎,大部分學(xué)校都還是會非常認可的。
選定了比賽后,深入研究下來,發(fā)現(xiàn)國內(nèi)的NOI只允許使用 C++ 語言,前兩年是允許Pascal 和 C語言的,去年也做了調(diào)整,現(xiàn)在必須學(xué)習(xí)C++ 語言的學(xué)生才能參加比賽。 但我明明記得國際奧林匹克競賽是允許其他語言的呀, 于是,到網(wǎng)上一陣搜索,發(fā)現(xiàn)國際的奧林匹克競賽確實是允許 C++,C,Pascal,Java,Python 語言的,國內(nèi)不知為何做了閹割,搞得只能使用C++ 語言了,這可怎么辦,難不成還要重新教孩子一遍C++ ?
我最早學(xué)習(xí)編程也是使用 C++ 語言的,對C++ 語言還是比較精通的, 但就因為比較精通,所以也了解這種語言的弊端,說實話,從應(yīng)用的角度來說,這種語言太繁瑣了,語言的語法就要學(xué)習(xí)很久,還經(jīng)常容易犯錯,并且想解決一些實際問題,開發(fā)量可能是Python的好幾倍。正因為如此,我才想讓孩子學(xué)習(xí)Python語言,學(xué)習(xí)編程并不是為了成為專職的開發(fā)人員,而是為了能夠有一種使用電腦解決問題的思路,那么找一種實用的,高效的語言就非常重要。
鑒于此,我直接搜素了美國針對奧林匹克的競賽,相對應(yīng)于國內(nèi)的NOI,美國有一個USACO 的比賽,這個比賽完整的支持上述的五種語言,每年會有幾個月的考試期,可以在網(wǎng)上報名,網(wǎng)站支持全世界各個國家的學(xué)生報名,考試設(shè)置了進階等級,在考試規(guī)則下能夠很好的完成題目就能得到晉升,并且這個比賽也得到了美國各大學(xué)的認可。這簡直太好了,是國內(nèi)NOI的一個完美替代,既有含金量,又不需要重新學(xué)C++語言,今后出國留學(xué),還能得到認可。
于是,立刻登錄USACO網(wǎng)站(http://www.usaco.org)進行注冊,注冊過程很順利,只需要提供郵件信息就能快速注冊。這個網(wǎng)站還提供了訓(xùn)練題目,訓(xùn)練題目需要重新注冊一個賬號,這個訓(xùn)練引導(dǎo)你以正式考試的流程提交代碼,并且提供歷年的試題讓你進行學(xué)習(xí),對于個人的算法能力提升非常有幫助。
算法是一種解決問題的思路,切入到算法層面,才算是真正的進入到了編程的世界,教孩子跟著項目做個游戲是簡單的,但是真正開始教算法的時候,就真正進入到了編程的核心,這個時候?qū)蠋煹囊?,對學(xué)生個人的能力要求都會高起來。如果準備給孩子學(xué)習(xí)C++ 語言,那么可以考慮同時參加國內(nèi)NOIP的考試和美國 USACO的考試,這兩個比賽都很有含金量。 如果不想選擇C++ 語言,而想選擇類似Python 這樣的動態(tài)語言,那么就只能參加 美國的USACO 了,但這個比賽在業(yè)內(nèi)是有一定權(quán)威性的,能夠隨著比賽提升算法能力,又得到獎項獲得認可,這可是一舉兩得的好事情。如果你也準備讓孩子學(xué)習(xí)Python,并且希望他能夠更加深入這門語言,可以考慮參加USACO,在算法方面練就一個堅實的內(nèi)核!