很多人對學習C語言感到無從下手,經常問我同一個問題:究竟怎樣學習C語言?我是一個教師,已經開發了很多年的程式。和很多剛剛起步的人一樣,學習的第一個電腦語言就是C語言。經過這些年的開發,我深深的體會到C語言對於一個程式設計人員多麼的重要,如果不懂C語言,你想寫底層程式這幾乎聽起來很可笑,不懂C語言,你想寫出優秀高效的程式,這簡直就是。為什麼C語言如此重要呢?
第一:C語言文法結構很簡潔精妙,寫出的程式也很高效,很便於描述演算法,大多數的程式員願意使用C語言去描述演算法本身,所以,如果你想在程式設計方面有所建樹,就必須去學它。
第二:C語言能夠讓你深入系統底層,你知道的作業系統,哪一個不是C語言寫的?所有的Windows,Unix,Linux,Mac OS,沒有一個例外的。如果你不懂C語言,怎麼可能深入到這些作業系統當中去呢?更不要說你去寫它們的核心程式了。
第三:很多新型的語言都是衍生自C語言,C++,Java,C#,J#,Perl……哪個不是呢?掌握了C語言,可以說你就掌握了很多門語言,經過簡單的學習,你就可以用這些新型的語言去開發了,這個再一次驗證了C語言是程式設計的重要基礎。還有啊,多說一點:即使現在招聘程式員,考試都是考C語言,你想加入IT行業,那麼就一定要掌握好C語言。
那麼究竟怎樣學習C語言呢?
1.工欲善其事,必先利其器
這裡介紹幾個學習C語言必備的東東:
一個開發環境,例如Turbo C 2.0。這個曾經佔據了DOS時代開發程式的大半個江山。但是現在Windows時代,用Turbo C 有感覺不方便,編輯程式起來很吃力,更沒有函數變數自動感應功能,查詢參考資料也不方便。建議使用Visual C++ ,這個東西雖然比較大塊頭,但是一旦安裝好了,用起來很方便。
一本學習教程,現在C語言教材多如牛毛,但推薦大家使用《C語言程式設計》(譚浩強主編 第二版 清華大學出版社),此書編寫的很適合初學者,並且內容也很精要。
除此以外,現在有很多輔助學習的軟體,畢竟現在是Window時代了,學習軟體多如牛毛,不象我們當初學習,只有讀書做題這麼老套。我向大家推薦一個——整合學習環境(C語言),裡邊的知識點總結和常式講解都非常好,還有題庫測試環境,據說有好幾千道題,甚至還有一個Windows下的Turbo C。初學者甚至不用裝其它的編譯器,就可以練習編程了,非常適合初學者。還有一個“C語言學習系統”軟體,不過感覺只是一個題庫系統,如果你覺得題做的不夠,不妨也可以試試。
2.葵花寶典
學習電腦語言最好的方法是什嗎?答曰:讀程式。
沒錯,讀程式是學習C語言入門最快,也是最好的方法。如同我,現在學習新的J#,C#等其他語言,不再是抱著書本逐行啃,而是學習它們的常式。當然,對於沒有學過任何電腦語言的初學者,最好還是先閱讀教程,學習完每一章,都要認真體會這一章的所有概念,然後不放過這一章中提到的所有常式,然後仔細研讀程式,直到每一行都理解了,然後找幾個編程題目,最好是和常式類似的或一樣的,自己試圖寫出這段已經讀懂的程式,不要以為常式你已經讀懂了,你就可以寫出和它一樣的程式,絕對不一定,不相信你就試一試吧。如果寫不出來,也不要著急,回過頭來再繼續研究常式,想想自己為什麼寫不出來,然後再去寫這段程式,反反覆複,直到你手到擒來為止。祝賀你,你快入門了。
3.登峰造極
寫程式的最高境界其實就是掌握各種解決問題的手段(資料結構)和解決問題的方法(演算法)。
是不是寫出底層程式就是程式設計高手呢?非也。寫底層程式,無非是掌握了硬體的結構,況且硬體和硬體還不一樣,要給一個晶片寫驅動程式,無非就是掌握這塊晶片的各種寄存器及其組合,然後寫值讀值,僅此而已。這不過是熟悉一些IO函數罷了。那麼怎樣才算精通程式設計呢?舉個例子:你面前有10個人,找出一個叫“張三”的人,你該怎麼辦?第一種方法,直接對這10個人問:“誰叫張三?”。第2種方法,你挨個去問:“你是不是張三?”,直到問到的這個人就是張三。第三種方法,你去挨個問每一個人:“你認不認識張三?指給我看”。不要小看這個問題,你說當然會選第一種方法,沒錯恭喜你答對了。因為這個方法最快,效率最高。但是在程式設計中找到解決問題的最優方法和你用的手段卻是考驗一個程式員程式設計水平的重要標誌,而且是不容易達到的。剛才這個問題類似於資料結構和演算法中的Map資料結構、窮舉尋找和折半尋找。所以掌握好資料結構和一些常用演算法,是登峰造極的必然之路。最後給大家推薦嚴尉敏的《資料結構》(清華大學出版社),希望每一個想成為程式設計高手的人研讀此書。