我們有兩條路來學習編程,一條是厚積薄發,一條則是速成的道路。厚積薄發要一點點打根基,比如學習C語言、學習計算機系統的構造,去看《計算機程序的構造與解釋》這類書,去學習算法等,這么走有點吃力不討好,吭哧半天也還不一定能看到什么結果;速成的就可以先學習IDE,先學習腳本,先學習CSS,JavaScript,這樣沒多久就可以獨立干不少活了,比如創建個漂亮網站什么的。
這種不同道路的選擇最終決定了C是不是更適合做第一門語言。走前一條路的顯然就適合用C做第一門語言,因為不掌握這種系統級的語言就不太好理解什么是指針,什么Stack,什么是Stack Overflow,什么是寫超界,對打基礎形成不良影響,也理解不了《深入理解計算機系統》這樣的書。走后一條道路的就沒關系了,哪個實用學哪個。
從C語言開始學習編程對大學生而言的含義:除了大學的時間,你可能再也沒有大段的時間打基礎。容易的東西是可以用碎片時間學的,比如各種腳本語言,但難的東西是需要大片時間學的,所以一旦大學里不把硬骨頭啃掉,未來很可能就沒時間啃了,說回來還是要先打基礎再談其它。
歷史上趙匡胤曾經猶豫過是先搞定比較羸弱的南唐還是先搞定幽云十六州,最終他選擇了先易后難去搞南唐,從結果來看這是錯了,你不趁自己最巔峰的時刻搞定最難搞的,未來可能就再沒機會了,而羸弱其實一直會弱在那里,早搞晚搞差別不大。
當然我們也必須承認即使努力的去打基礎,也不是每個人向上走,都能成為高手、成為特別牛的程序員,還是有人會卡在某條線下面,要去維護垃圾代碼、寫垃圾代碼,但關鍵是我們談的是在學習階段應該怎么做,不爭一爭就放棄某種可能性,還是太可惜了。
此外,對于大學生或者那些有充足時間學習的人,我不太認可一種方式可以培養興趣,另一種就不能培養興趣的說法。這更多的可能是種借口,因為在有如此多好玩開源項目的年代,對于想學的人,C語言一樣可以有很多興趣,對于不想學的人再簡單的語言一樣也很無聊。有沒有趣,是學習或者是教學方法的問題,而不是編程語言的問題。