C語(yǔ)言感觸篇:十年之后重學(xué)C語(yǔ)言,歲月蹉跎,我聽(tīng)聞你始終一個(gè)人
1.1 多次自學(xué),不得其法
距離大學(xué)時(shí)學(xué)習(xí)C語(yǔ)言已有十個(gè)年頭了。印象里最深的就是當(dāng)時(shí)一位海歸老師,在講課時(shí)流露出對(duì)K&R的崇敬之情,以及用Hanoi塔的例子講解遞歸。但當(dāng)時(shí)的我還無(wú)法體會(huì),也只是不走心的聽(tīng)聽(tīng)。那時(shí)的我還不知道K&R有多牛,遞歸有多重要。
十年間經(jīng)歷了很多項(xiàng)目,也業(yè)余時(shí)間自學(xué)了很多東西。溫習(xí)過(guò)C、自學(xué)過(guò)匯編、嘗試操作系統(tǒng)內(nèi)核。看過(guò)不少推薦的好書(shū),看語(yǔ)法看得不厭其煩。卻始終感覺(jué)對(duì)C語(yǔ)言既熟悉又陌生,熟悉其語(yǔ)法,陌生的是:這真的就是C語(yǔ)言最精華的部分嗎?
1.2 不期而遇,峰回路轉(zhuǎn)
轉(zhuǎn)機(jī)就在剛剛結(jié)束的一學(xué)期高強(qiáng)度的研究生學(xué)習(xí)。因?yàn)橹耙呀?jīng)對(duì)C的基礎(chǔ)知識(shí)比較熟悉了,所以這學(xué)期并未刻意去系統(tǒng)學(xué)習(xí)(也確實(shí)沒(méi)有時(shí)間)。就在實(shí)踐中摸爬滾打了一學(xué)期,這次讓我對(duì)C語(yǔ)言有了重新的認(rèn)識(shí)。深深感受到:如果說(shuō)算法實(shí)現(xiàn)只是用C小試牛刀,操作系統(tǒng)內(nèi)核等底層開(kāi)發(fā)才是讓C爆發(fā)出強(qiáng)大力量的地方,
也許刷題和實(shí)現(xiàn)算法時(shí)我們還有很多更加現(xiàn)代化的選擇,例如C++、Java甚至Python,C語(yǔ)言不過(guò)是簡(jiǎn)潔明了的一種選擇罷了。但在像操作系統(tǒng)內(nèi)核、網(wǎng)絡(luò)編程、編譯器設(shè)計(jì)等研究生課程中,C簡(jiǎn)直處于霸主地位。暑假了有時(shí)間好好總結(jié)了,趕緊趁著感覺(jué)還在再深入理解一下。
1.3 不是書(shū)不好,只是時(shí)候未到
拿著這一本《The C Programming Language》,感到非常驚奇!這樣一本古老的、薄薄的書(shū),竟然霸占了所有編程類(lèi)推薦書(shū)目榜單的前列。個(gè)中原因,多少年來(lái)我一直找不到答案。最近重讀K&R,滿打滿算應(yīng)該是第三次了,終于被深深震撼到了:第一次讀看到的是滿篇的語(yǔ)法規(guī)則,第二次讀看到的是各種巧妙的編程手法,而第三次重讀看到的卻哪里是C語(yǔ)言,這簡(jiǎn)直就是OS內(nèi)核和編譯原理嘛!
結(jié)束語(yǔ):學(xué)習(xí)C語(yǔ)言是個(gè)長(zhǎng)期過(guò)程
讀完本文能夠感受到C語(yǔ)言已經(jīng)超出了單單一門(mén)語(yǔ)言的范疇,其背后的文化和底蘊(yùn),非一朝一夕就能夠精通的。從計(jì)算機(jī)系統(tǒng)架構(gòu)、操作系統(tǒng)內(nèi)核、編譯鏈接等知識(shí)的交匯,到Unix文化和設(shè)計(jì)思想,真的是博大精深!所以,在整個(gè)編程生涯中,對(duì)于如C語(yǔ)言這種經(jīng)典的老技術(shù),我們都應(yīng)反反復(fù)復(fù)去琢磨、去領(lǐng)會(huì)。相信總有一天能悟到真理。有如果足下有興趣,期待你得駐足。