多年程序員分享C語言學(xué)習(xí)經(jīng)驗(yàn)

很多人對學(xué)習(xí)C語言感到無從下手,經(jīng)常問我同一個(gè)問題:究竟怎樣學(xué)習(xí)C語言残拐? 我是一個(gè)教師,已經(jīng)開發(fā)了很多年的程序碟嘴,和很多剛剛起步的人一樣溪食,學(xué)習(xí)的第一個(gè)計(jì)算機(jī)語言就是C語言。經(jīng)過這些年的開發(fā)娜扇,我深深的體會到C語言對于一個(gè)程序設(shè)計(jì)人員多么的重要错沃,如果不懂C語言,你想寫底層程序這幾乎聽起來很可笑雀瓢,不懂C語言枢析,你想寫出優(yōu)秀高效的程序,這簡直就是天方夜譚刃麸。

為什么C語言如此重要呢醒叁?

第一:C語言語法結(jié)構(gòu)很簡潔精妙,寫出的程序也很高效泊业,很便于描述算法把沼,大多數(shù)的程序員愿意使用C語言去描述算法本身,所以吁伺,如果你想在程序設(shè)計(jì)方面有所建樹饮睬,就必須去學(xué)它。

第二:C語言能夠讓你深入系統(tǒng)底層篮奄,你知道的操作系統(tǒng)捆愁,哪一個(gè)不是C語言寫的?所有的windows,Unix,Linux,Mac,os/2窟却,沒有一個(gè)里外的昼丑,如果你不懂C語言,怎么可能深入到這些操作系統(tǒng)當(dāng)中去呢夸赫?更不要說你去寫它們的內(nèi)核程序了矾克。

第三:很多新型的語言都是衍生自C語言,C++,Java,C#,J#,perl...哪個(gè)不是呢?掌握了C語言胁附,可以說你就掌握了很多門語言酒繁,經(jīng)過簡單的學(xué)習(xí),你就可以用這些新型的語言去開發(fā)了控妻,這個(gè)再一次驗(yàn)證了C語言是程序設(shè)計(jì)的重要基礎(chǔ)州袒。

還有啊,多說一點(diǎn):即使現(xiàn)在招聘程序員弓候,考試都是考C語言郎哭,你想加入it行業(yè),那么就一定要掌握好C語言菇存。

那么究竟怎樣學(xué)習(xí)C語言呢夸研?

1:工欲善其事,必先利其器這里介紹幾個(gè)學(xué)習(xí)C語言必備的東東:

一個(gè)開發(fā)環(huán)境依鸥,例如turbo C 2.0,這個(gè)曾經(jīng)占據(jù)了DOS時(shí)代開發(fā)程序的大半個(gè)江山亥至。但是現(xiàn)在windows時(shí)代,用turbo C有感覺不方面贱迟,編輯程序起來很吃力姐扮,并且拖放,更沒有函數(shù)變量自動(dòng)感應(yīng)功能衣吠,查詢參考資料也不方便茶敏。建議使用Visual C++,這個(gè)東西雖然比較大塊頭,但是一旦安裝好了缚俏,用起來很方便惊搏。

一本學(xué)習(xí)教程,現(xiàn)在C語言教材多如牛毛,但推薦大家使用《C語言程序設(shè)計(jì)》譚浩強(qiáng)主編 第二版 清華大學(xué)出版社忧换,此書編寫的很適合初學(xué)者恬惯,并且內(nèi)容也很精到。除此以外包雀,現(xiàn)在有很多輔助學(xué)習(xí)的軟件宿崭,畢竟現(xiàn)在是Window時(shí)代了亲铡,學(xué)習(xí)軟件多如牛毛才写,不象我們當(dāng)初學(xué)習(xí),只有讀書做題這么老套奖蔓。我向大家推薦一個(gè)“集成學(xué)習(xí)環(huán)境(C語言)”赞草,里邊的知識點(diǎn)總結(jié)和例程講解都非常好,還有題庫測試環(huán)境吆鹤,據(jù)說有好幾千題厨疙,甚至還有一個(gè)windows下的trubo C,初學(xué)者甚至不用裝其它的編譯器疑务,就可以練習(xí)編程了,非常適合初學(xué)者沾凄。

還有一個(gè)“C語言學(xué)習(xí)系統(tǒng)”軟件梗醇,不過感覺只是一個(gè)題庫系統(tǒng),如果你覺得題做的不夠撒蟀,不妨也可以試試叙谨。

2:葵花寶典學(xué)習(xí)計(jì)算機(jī)語言最好的方法是什么?答曰:讀程序保屯。沒錯(cuò)手负,讀程序是學(xué)習(xí)C語言入門最快,也是最好的方法姑尺。如同我竟终,現(xiàn)在學(xué)習(xí)新的J#,C#等其他語言,不再是抱著書本逐行啃切蟋,而是學(xué)習(xí)它們的例程统捶。當(dāng)然,對于沒有學(xué)過任何計(jì)算機(jī)語言的初學(xué)者敦姻,最好還是先閱讀教程瘾境,學(xué)習(xí)完每一章,都要認(rèn)真體會這一章的所有概念镰惦,然后不放過這一章中提到的所有例程迷守,然后仔細(xì)研讀程序,直到每一行都理解了旺入,然后找?guī)讉€(gè)編程題目兑凿,最好是和例程類似的或一樣的,自己試圖寫出這段已經(jīng)讀懂的程序茵瘾,不要以為例程你已經(jīng)讀懂了礼华,你就可以寫出和它一樣的程序,絕對不一定拗秘,不相信你就試一試吧圣絮,如果寫不出來,也不要著急雕旨,回過頭來再繼續(xù)研究例程扮匠,想想自己為什么寫不出來,然后再去寫這段程序凡涩,反反復(fù)復(fù)棒搜,直到你手到擒來為止,祝賀你活箕,你快入門了力麸。

3:登峰造極寫程序的最高境界其實(shí)就是掌握各種解決問題的手段(數(shù)據(jù)結(jié)構(gòu))和解決問題的方法(算法)。是不是寫出底層程序就是程序設(shè)計(jì)高手呢?非也克蚂,寫底層程序闺鲸,無非是掌握了硬件的結(jié)構(gòu),況且硬件和硬件還不一樣埃叭,要給一個(gè)芯片寫驅(qū)動(dòng)程序翠拣,無非就是掌握這塊芯片的各種寄存器及其組合,然后寫值讀值游盲,僅此而已误墓。這不過是熟悉一些io函數(shù)罷了。 那么怎樣才算精通程序設(shè)計(jì)呢益缎?怎樣才能精通程序設(shè)計(jì)呢谜慌?舉個(gè)例子:你面前有10個(gè)人,找出一個(gè)叫“張三”的人莺奔,你該怎么辦欣范?

第一種方法:直接對這10個(gè)人問:“誰叫張三”。

第二種方法:你挨個(gè)去問“你是不是張三令哟?”恼琼,直到問到的這個(gè)人就是張三。

第三方法:你去挨個(gè)問一個(gè)人“你認(rèn)不認(rèn)識張三屏富,指給我看”晴竞。

不要小看這個(gè)問題,你說當(dāng)然會選第一種方法狠半,沒錯(cuò)恭喜你答對了噩死,因?yàn)檫@個(gè)方法最快,效率最高神年,但是在程序設(shè)計(jì)中找到解決問題的最優(yōu)方法和你用的手段卻是考驗(yàn)一個(gè)程序員程序設(shè)計(jì)水平的重要標(biāo)志已维,而且是不容易達(dá)到的。剛才這個(gè)問題類似于數(shù)據(jù)結(jié)構(gòu)和算法中的:Map數(shù)據(jù)結(jié)構(gòu)已日,窮舉查找和折半查找垛耳。所以掌握好數(shù)據(jù)結(jié)構(gòu)和一些常用算法,是登峰造極的必然之路飘千。最后給大家推薦嚴(yán)尉敏的《數(shù)據(jù)結(jié)構(gòu)》清華大學(xué)出版社堂鲜,希望每一個(gè)想成為程序設(shè)計(jì)高 手的人研讀此書。

小編推薦一個(gè)學(xué)C語言/C++的學(xué)習(xí)裙六六六二九五四九八 邀請編碼【凌云】無論你是大牛還是小白占婉,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)泡嘴!裙內(nèi)有開發(fā)工具甫恩,很多干貨和技術(shù)資料分享逆济!

語言學(xué)習(xí)方法

談?wù)勁嫉膶W(xué)習(xí)方法,拋磚引玉! 學(xué)習(xí)不論講不講方法奖慌,最終都能學(xué)會抛虫。但是別人1個(gè)月學(xué)會了,而你卻100年才學(xué)會简僧,這不就晚了么建椰?

所以說,學(xué)習(xí)還是要講究方法的岛马。學(xué)習(xí)方法正確棉姐,事半功倍;學(xué)習(xí)方法不正確啦逆,事倍而功半伞矩。

什么才是學(xué)習(xí)C語言的捷徑?我的答案是看書夏志。書中所寫乃坤,是前人數(shù)十年經(jīng)驗(yàn)所寫,看十本書沟蔑,就相當(dāng)于汲取了前人數(shù)十年的功力湿诊,那么你的內(nèi)功也會迅速上升1甲子。

書當(dāng)然要看好書瘦材,只有好書才營養(yǎng)豐富厅须。假如你花了1天時(shí)間看了一本破書,而該書介紹的知識雖然對于你來說是全新的知識食棕,但是由于書中組織不當(dāng)九杂、或者深度不夠,使你獲取的營養(yǎng)很少宣蠕,還不如自己研究一天來的快例隆,這種書就不值當(dāng)看了。學(xué)習(xí)C語言要看那些好書抢蚀?我認(rèn)為首先要把基礎(chǔ)書給看扎實(shí)了镀层,比如《C語言之四書五經(jīng)》中介紹的4本。(雖然這些書很多已經(jīng)絕版了皿曲,但我相信電子版也是很有益處唱逢。況且,如果你真的想看屋休,我相信你一定有辦法搞的到坞古。)

這些書你會在很短的時(shí)間內(nèi)看完(比如一兩個(gè)月),這取決于你的基礎(chǔ)和悟性劫樟。 之后要看那些書呢痪枫?我不妨再列幾本织堂。Bjarne Stroustrup的《C++程序設(shè)計(jì)語言》theC++Programming Language)一定要看,這本書里面對于C的一些基礎(chǔ)概念的定義奶陈,比我見過的其他任何C語言書都要全易阳,都要仔細(xì);Bjarne Stroustrup的《C++語言的設(shè)計(jì)與演化》(The Design and Evolution of C++)和David R.Hanson 的《C語言接口與實(shí)現(xiàn) 創(chuàng)建可重用軟件的技術(shù)》(C Interfaces and Implaementations Techniques for Creating Reusable Software)一定要看吃粒,這兩本書講述了如何用C來實(shí)現(xiàn)異常處理潦俺、實(shí)現(xiàn)類型的封裝和擴(kuò)展等一些大的項(xiàng)目中經(jīng)常用到的高級技術(shù)。

其他的書徐勃,操作系統(tǒng)的要看事示,編譯原理的要看,算法的要看僻肖,模式的也要看很魂。讀書破萬卷,coding如有神檐涝。 總而言之遏匆,就如《傳》中云:“生而知之者,上也谁榜;學(xué)而知之者幅聘,次也;困而學(xué)之又其次也窃植〉圯铮”我們不能總是因困而學(xué)之,而要做到兵馬未動(dòng)巷怜,糧草先行葛超。看書是學(xué)習(xí)的導(dǎo)向延塑,書中能一一介紹清楚概念绣张,但書卻不能把應(yīng)用的細(xì)節(jié)一一介紹給你,因?yàn)閼?yīng)用總是招數(shù)繁復(fù)关带,變化多端侥涵。因此我們要想熟悉招數(shù),懂得書中所講怎么使用宋雏,還要多讀源碼芜飘。Linus給別人解答問題的時(shí)候,常說Read the fucking source code磨总;候捷也在其文中提到“源碼之前嗦明,了無秘密◎窖啵”這就是大師的箴言呀娶牌。源碼就像是動(dòng)畫奔浅、就像是幻燈片,把書中的招式一一演練給你看裙戏。可以說高手的經(jīng)驗(yàn)大都是源自代碼厕诡。

源碼和書一樣累榜,也是要看好的,不要看差的灵嫌。在此壹罚,我推薦看Linux kernel source code 和 Linux tcp/ip source code。這兩套代碼都是開源的寿羞,垂手可得猖凛。此外,還可以配合著Andrew S.Tanenbaum的《操作系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》(Operating Systems:Design and Implementation)绪穆、毛德操 胡希明的《Linux內(nèi)核 源代碼情景分析》辨泳、Jonathan Corbet,Alessandro Rubini,Greg Kroah-Hartman合著的《Linux設(shè)備驅(qū)動(dòng)程序》(Linux Device Driver,3e)、W.Richard Stevens《TCP/IP詳解(3部)》 (TCP/IP Illustracted )玖院、W.Richard Stevens《UNIX環(huán)境高級編程》(Advanced Programming in the UNIX Environment菠红,新版增加了Linux kernel的內(nèi)容)等書來看,方便的很难菌。

當(dāng)然程序不是看出來的试溯,是寫出來的。我高中的時(shí)候每天堅(jiān)持寫6個(gè)小時(shí)程序郊酒,《數(shù)據(jù)結(jié)構(gòu)》和排列組合遇绞、圖論方面的習(xí)題反復(fù)做了N遍。到現(xiàn)在雖然已經(jīng)時(shí)隔五六年燎窘,很多內(nèi)容早已淡忘掉摹闽,但卻培養(yǎng)了我很強(qiáng)的編碼能力和調(diào)試能力,直到現(xiàn)在還對我的工作有很大的幫助褐健。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钩骇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子铝量,更是在濱河造成了極大的恐慌倘屹,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慢叨,死亡現(xiàn)場離奇詭異纽匙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)拍谐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門烛缔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來馏段,“玉大人,你說我怎么就攤上這事践瓷≡合玻” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵晕翠,是天一觀的道長喷舀。 經(jīng)常有香客問我,道長淋肾,這世上最難降的妖魔是什么硫麻? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮樊卓,結(jié)果婚禮上拿愧,老公的妹妹穿的比我還像新娘。我一直安慰自己碌尔,他們只是感情好浇辜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著唾戚,像睡著了一般奢赂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上颈走,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天膳灶,我揣著相機(jī)與錄音,去河邊找鬼立由。 笑死轧钓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锐膜。 我是一名探鬼主播毕箍,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼道盏!你這毒婦竟也來了而柑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤荷逞,失蹤者是張志新(化名)和其女友劉穎媒咳,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體种远,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涩澡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坠敷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妙同。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡射富,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出粥帚,到底是詐尸還是另有隱情胰耗,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布芒涡,位于F島的核電站柴灯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏拖陆。R本人自食惡果不足惜弛槐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一懊亡、第九天 我趴在偏房一處隱蔽的房頂上張望依啰。 院中可真熱鬧,春花似錦店枣、人聲如沸速警。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闷旧。三九已至,卻和暖如春钧唐,著一層夾襖步出監(jiān)牢的瞬間忙灼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工钝侠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留该园,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓帅韧,卻偏偏與公主長得像里初,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子忽舟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容