一種語言能夠達到影響學生習(xi) 慣的程度,那一定是已經使用這種語言做過不少項目,寫(xie) 過不少代碼了,表達過不少算法思維。但據我了解,很多學生雖然從(cong) 小學習(xi) Python,但獨立使用這種語言編寫(xie) 代碼的經曆卻非常少,很可能是跟著老師抄過不少代碼,這種編程語言學習(xi) 經曆,其實並不能算是掌握了一種編程語言。
一旦掌握了一種編程語言後,如果要切換到另外一種編程語言,其實是一件比較簡單的事情。因為(wei) 最開始學習(xi) 編程語言,最搞不清楚的是一些概念,例如嵌套循環,二維數組,結構體(ti) ,值類型和引用類型等應該如何應用?如果你已經掌握了一門語言,那麽(me) 這些概念自然都已經理解了,此時再切換到其他語言,無非就是學習(xi) 一下在另外一種語言中,這些概念應該如何用代碼表述,是否有什麽(me) 限製。正常情況下,掌握第二門語言的時間不會(hui) 超過一個(ge) 月。
那麽(me) 重新回到家長的問題,如果學生什麽(me) 語言都沒有學習(xi) 過,並且短期目標是參加USACO競賽,那麽(me) 應該學習(xi) 什麽(me) 語言呢? 我的建議是學習(xi) Java 或者 C++ 語言。USACO 競賽允許使用四種語言,分別是C++, Java,Python和C 語言。原來是允許使用 Pascal 語言的,但這種語言目前學習(xi) 的人很少,相比於(yu) 其他幾種語言,應用領域也很少,所以目前已經被取消了。
目前存留下的這四種語言,正好名列 TIOBE (權威的編程語言使用排名)的前四名,可見都是非常受歡迎的語言,學習(xi) 其中任何一種都是很好的。但從(cong) USACO 算法競賽的角度來看,Python 在效率上存在一些問題,並且缺少了類似 TreeSet, TreeMap 這樣的數據結構,導致在高級別競賽中會(hui) 有瓶頸。而C 語言是一種非常底層的語言,缺少麵向對象,範型等機製,比較適合硬件相關(guan) 的開發場景。相比而言, Java 和 C++ 能更好的支撐大型項目的開發,在實際生產(chan) 中應用非常廣泛,並且效率高,在保證深入USACO算法競賽的同時,對於(yu) 今後的工作也是非常有幫助的。
當然,如果學生已經學習(xi) 了 Python 語言,那麽(me) 也不用糾結,可以直接使用 Python 參加銅組的競賽,後續個(ge) 人確實比較喜歡算法學習(xi) ,準備深入學習(xi) 下去,這個(ge) 時候可以再考慮換一種語言,估計做這個(ge) 決(jue) 定的時候,很可能是你在金牌級別的時候了,到達這個(ge) 能力級別的學生,相信對編程語言的理解已經很不錯了,轉其他語言也會(hui) 非常快的。
對於(yu) 算法來說,任何一種編程語言都是為(wei) 了表達算法思路的,所以編程語言不重要,背後的思維才更加重要。但是,語言確實能夠影響一個(ge) 學生的編程習(xi) 慣,從(cong) 這個(ge) 角度來說,又確實非常重要。所以選擇一種曆經考驗,應用廣泛的語言對於(yu) 今後求學就業(ye) 都會(hui) 更有幫助,從(cong) 這意義(yi) 上來說,Java,C++ ,Python都是非常好的語言,都有各自的一片天地,不管選擇哪個(ge) ,都是最好的決(jue) 定!
評論已經被關(guan) 閉。