用一個詞來形容:C 生萬物。 聽起來有點浮夸,但也沒說錯。 現(xiàn)今這個世界上,幾乎所有重要的軟件都跟 C 有關系:主流操作系統(tǒng)是 C 寫的,絕大多數(shù)語言的編譯器也是 C 寫的,數(shù)據(jù)庫、網(wǎng)絡、硬件驅(qū)動、服務器應用等等,都是 C 寫的。說霸氣點兒,這個世界就是在 C 語言之上運行的。而且在這些領域,C 語言是完全的“壟斷”,連競爭者都沒有。所以,扎心的就來了——“會不會 C 語言是軟件工程師和社畜的分界線” 。畢竟,真正的高手,就得掌握計算機是如何組成的,程序是如何運行的,編譯器是如何把高級語言轉(zhuǎn)化成 CPU 指令的,網(wǎng)絡設備是如何傳送數(shù)據(jù)的...等等,而這些,都要跟 C 語言打交道,說白了,C 語言就是內(nèi)功。
而且眾所周知,現(xiàn)如今幾乎所有的編程語言,都是以 C 語言為基礎拓展的:C++、Java、Go、Python、JS 等等,所以你會發(fā)現(xiàn),學好了 C 語言,別的語言都很容易上手,更不會因為“語言層出不窮”而焦慮。當然,你也可以跳過 C 語言學其他的語言,不過,技術(shù)債遲早是要還的。
不夸張地說,想要成為高手,就必須吃透C語言。只有如此,你的技術(shù)之路才能走得更遠。
所以,與其吐槽說 C 語言“過時”,不如想想,如何更好地擁抱、使用它。畢竟,大部分人學 C 之路都頗為坎坷,會遇到很多困難,比如:
C 語言的的語法很基礎,但學完又感覺什么都不會?
指針是如何靈活使用內(nèi)存的?
如何編寫高性能代碼?
編譯器在鏈接程序時發(fā)生了什么?
....
我的經(jīng)驗,學好C語言,除了簡單的語法外,更重要的是要搞懂 C 程序從編寫到編譯,再到被運?的整個細節(jié)。分享我當初的學習路徑:
掌握基本語法,理解 C 程序的運行細節(jié);
掌握標準庫,性能優(yōu)化以及工程化內(nèi)容,搞懂如何寫一個可以用在生產(chǎn)實踐中的 C 程序;
掌握編譯、鏈接、加載以及和操作系統(tǒng)的交互細節(jié),搞懂 C 程序是如何運?起來的。
下面想跟大家分享一下,學習路線圖,建議收藏??
時至今日,C 語言作為最“古老”的編程語言之一,仍然“老當益壯”、生生不息。這一切靠的不是巧合,而是絕對的實力。而要發(fā)揮 C 語言的最大威力,我們就不應該只簡單了解它的語法,而應該在此基礎上進一步了解代碼如何被編譯,程序如何被運行。只有當完整的“鏈路”建立在腦海中時,你才對程序有了最完全的把控。 本文綜合整理自:編程指北、findyi