對於(yu) 剛剛接觸算法編程學習(xi) 的家長來說,在谘詢了很多編程機構後,最讓他們(men) 疑惑的就是編程語言入門到底需要多長時間?有些機構會(hui) 說,C++ 是屬於(yu) 比較難學的語言,真正完全理解C++ ,是需要一年課時的。還有一些機構則說差不多半年時間就可以了,並且把課時大綱給出來,明確給出了學習(xi) 進度。這兩(liang) 個(ge) 答案相差巨大,很多家長就此迷惑了。
當這些迷惑的家長向我谘詢的時候,我的答案則是差不多需要15個(ge) 小時,按照每次課1.5 個(ge) 小時算,也就是10節課。聽到這個(ge) 答案的家長更加迷惑了,這差別也太大了吧,怎麽(me) 同樣一種語言,不同機構給出的學習(xi) 時間會(hui) 相差這麽(me) 大?
其中有一位家長是教英語的老師,他很認真的對我說,對於(yu) 英語學習(xi) 來說,都需要一個(ge) 循序漸進的過程,要打好基礎可能需要幾年時間,編程也是一種語言,應該也符合語言規律,如果慢慢學習(xi) 的話,基礎是不是能打的更紮實些?
編程語言確實也是一種語言,但編程語言的語法可比英語要容易多了,而且編程也不需要大家背單詞呀。就拿C++ 來舉(ju) 例子吧,這種語言的保留關(guan) 鍵字也就95 個(ge) (所謂學習(xi) 語言,就是了解這些關(guan) 鍵字的使用方法和場景),平時應用的比較多的關(guan) 鍵字也就20個(ge) 不到,所以還真不用象英語這樣學習(xi) 那麽(me) 久。
那麽(me) 在學習(xi) 時間上為(wei) 什麽(me) 會(hui) 有這麽(me) 大的差別呢?這就和機構的用戶年齡,學習(xi) 目標,教學方式,盈利模式等都有關(guan) 係了。
很多機構都是針對少兒(er) 編程培訓的,其學生主要集中在6-14 歲之間,編程語言是以Python 為(wei) 主的,一般都是建議學生學習(xi) 完Python後,再進行 C++ 語言的學習(xi) 。這類培訓機構本來就不是以算法教學為(wei) 主,也缺少算法教學的老師,那麽(me) 針對希望學習(xi) C++ 的學生,肯定是盡量把基礎學習(xi) 的時間拉長,有很多學生在學習(xi) 的過程中,自己找不到目標,也就漸漸放棄了。
國內(nei) 很多麵向 NOIP 競賽的機構,一般都會(hui) 把編程語言學習(xi) 的時間設定在半年左右。這個(ge) 很可能是很多機構都延續一套課程設置體(ti) 係,整個(ge) 體(ti) 係一旦確定後,也就不願意再變動了,而且如果家長都接受半年學習(xi) C++ 是合理的,那麽(me) 為(wei) 啥要縮短這個(ge) 時間呢?從(cong) 生意的角度來說,完全沒必要呀。
那麽(me) 15 個(ge) 小時真的能掌握C++ 嗎? 這裏我們(men) 給出幾個(ge) 前提條件。
首先,所學習(xi) 的C++ 知識是麵向算法競賽的(例如USACO),而不是麵向工程的。C++是一種通用的程序設計語言,從(cong) 最底層的嵌入式係統,到最上層的應用開發場景,它都可以覆蓋。如果學生是希望掌握工程中的C++ 語言,那麽(me) 是需要學習(xi) 很多相關(guan) 知識的,例如基於(yu) 麵向對象的程序設計思想,這就不是簡單的介紹類,繼承,多態等概念,短時間內(nei) 能夠讓學生理解的,需要大量的設計實踐。
但是算法編程中使用的語法,都是最基礎的概念,而且這些概念都還非常容易理解,涉及到的關(guan) 鍵字不到20 個(ge) ,如果目標是學習(xi) 這些關(guan) 鍵字,難度一下子就減少了很多。
其次,學生最好應該具有六年級以上的學習(xi) 和認知能力。很多學生可能從(cong) 二三年級就開始學習(xi) C++ 了,很多機構也都針對這個(ge) 年齡的學生開設了C++ 學習(xi) 班,但我個(ge) 人是不太適合教這麽(me) 小的學生的,年齡比較小的學生,有些概念說不清楚,需要舉(ju) 各種形象化的例子,來對概念加以潤色,從(cong) 而更方便學生接受,這樣教學的話,是需要更多課時的。
最後,學生能夠認真完成代碼編寫(xie) 。其實編程語言學習(xi) 的這個(ge) 階段,我覺得最重要的就是要多編寫(xie) 代碼,別管對不對,先編寫(xie) 再說,有些語句寫(xie) 錯了,被老師糾正兩(liang) 次也就理解了。這個(ge) 過程和畫畫一樣,老師給你講那麽(me) 多概念沒用,先畫起來,老師給你點評一下,你就知道下次應該如何畫了。編程語言學習(xi) 階段,就是要訓練通過代碼表達思維,所以一定要多加練習(xi) ,代碼量不夠,編程能力提升的就很慢。給大家曬一位學生在學習(xi) 了8節編程語法課過程中所編寫(xie) 的代碼情況:
大家可以看到,這位學生總共提交有134 次,解決(jue) 了76 道題目。8節課差不多有8個(ge) 知識點,相當於(yu) 每個(ge) 知識點將近做了10道題目。有了這樣的訓練,編程能力自然是提升很快的。而有些學生聽了很多概念,每次也就練習(xi) 個(ge) 一兩(liang) 道題,那編程能力自然提升的比較慢。
針對於(yu) 算法的編程語言學習(xi) ,其實不需要那麽(me) 長的時間,重點還是要多多練習(xi) ,能夠讓學生在練習(xi) 中掌握把思維轉換成代碼的技能。編程語言也是一種功能語言,也符合語言學習(xi) 的規律,那就是用進廢退,隻有多多使用才能讓你更好的掌握它,對於(yu) 初高中時間比較緊的學生來說,如果想要參加算法競賽,可以考慮加速掌握一門編程語言,然後在學習(xi) 算法的過程中,再通過不斷的使用繼續強化。
評論已經被關(guan) 閉。