為什麼說C語言如此重要?

ironman 2023-2-11 206

很多高手都建議小白從C語言開始學起,很多大學也把C語言作為軟件專業的基礎課程,很多底層軟件也使用C語言編寫……

種種跡象表明,C語言是一門極其重要的編程語言,它在某些方面不可被替代。

但是,初學者看到這個觀點又非常困惑,都已經寫了幾個月的C語言代碼了,除了能在控制台上輸出字符,也就沒有別的玩法了,實在不知道C語言有什麼能耐。

好了,不要著急,本文即將為你揭開C語言的神秘面紗,告你它在軟件產業中的支柱地位。


C語言是核心語言

也許是機緣巧合,C語言出現後不久,計算機產業開始大規模爆發,逐漸進入普通家庭,而C語言則成了底層編程的主力軍,獲得了前所未有的成功,操作系統、基礎組件、核心算法、硬件驅動、數據庫、通信協議等,都使用C語言開發。

雷軍說過,站在風口上,豬都能飛起來;C語言就是那頭豬,不管它好不好,反正它飛起來了。

在計算機高速發展的關鍵階段被大量使用,C語言無疑會成為整個軟件生態的基礎與核心。不了解C語言的話,你就觸碰不到軟件產業的本質,最終還是一個重複勞動的碼農,無法成為具有核心競爭力的專家。

軟件行業的很多細分學科都是基於C語言的,學習數據結構、算法、操作系統、編譯原理等都離不開C語言,所以大學將C語言作為一門公共課程,計算機相關專業的同學都要學習。

C語言還被譽為“上帝語言”,它不但奠定了軟件產業的基礎,還創造了很多其它語言,例如:

PHP、Python 等都是用C語言開發出來的,雖然平時做項目的時候看不到C語言的影子,但是如果想深入學習 PHP 和 Python,那就要有C語言基礎了。

C++ 和 Objective-C 乾脆在C語言的基礎上直接進行擴展,增加一些新功能後變成了新的語言,所以學習 C++ 和 Objective-C 之前也要先學習C語言。

C語言是不可逾越的一門編程語言:要想成長為高手級別必學C語言,要想掙大錢必學C語言,要想做黑客/紅客必學C語言,要想面試大廠必學C語言。


C語言是菜鳥和大神的分水嶺

程序是在內存中運行的,一名合格的程序員必須了解內存,學習C語言是了解內存佈局的最簡單、最直接、最有效的途徑,C語言簡直就是為內存而生的,它比任何一門編程語言都貼近內存(除了彙編)。

所有的程序都在拼盡全力節省內存,都在不遺餘力提高內存使用效率,計算機的整個發展過程都在圍繞內存打轉,不斷地優化內存佈局,以保證可以同時運行多個程序。

不了解內存,就學不會進程和線程,就沒有資格玩中大型項目,沒有資格開發底層組件,沒有資格架構一個系統,命中註定你就是一個菜鳥,成不了什麼氣候。

以上這點我有深刻的體會!工作期間我曾專注於網站開發,雖然能夠設計出界面漂亮、體驗良好的網頁,但是對內存洩漏、多線程、共享內存等底層概念一竅不通,感覺和周圍同事的差距很大,這讓我非常鬱悶,不知道如何突破。我曾多次嘗試學習內存和線程,也找了很多資料,但是無論如何都啃不懂,到頭來還是一頭霧水。

離職後我全職運營C語言中文網,於是決定再次系統、深入、全面地學習C語言,並結合C語言去了解一些內存知識,這個時候我才發現,原來C語言就是為內存而生的,C語言的設計和內存的佈局是嚴密貼合的,我因為學習C語言而吃透了內存,了解了計算機內存是如何分佈和組織的。

C語言無時無刻不在談內存,內存簡直就是如影隨形,你不得不去研究它。

至關重要的一點是,我能夠把內存和具體的編程知識以及程序的運行過程結合起來,真正做到了學以致用,讓概念落地,而不是空談,這才是最難得的。

另外一個驚喜是,攻克內存後我竟然也能夠理解進程和線程了,原來進程和線程也是圍繞內存打轉的,從一定程度上講,它們的存在也是為了更加高效地利用內存。

從C語言到內存,從內存到進程和線程,環環相扣:不學C語言就吃不透內存,不學內存就吃不透進程和線程。

我感覺自己瞬間昇華了,達到了一個新的高度,之前的很多謎團都解開了,和大神交流也沒有障礙了。

「內存 + 進程 + 線程」這幾個最基本的計算機概念是菜鳥和大神的分水嶺,也只有學習C語言才能透徹地理解它們。 Java、C#、PHP、Python、JavaScript 程序員工作幾年後會遇到瓶頸,有很多人會回來學習C語言,重拾底層概念,讓自己再次突破。


總結

學習C語言的目的不是做出炫酷實用的軟件,這也不是C語言的長項,你能寫幾個簡單的控制台程序就行了。

學習C語言的重點是了解操作系統、數據結構、算法、內存、進程、線程、通信、驅動、編譯原理等基本概念,它們都是軟件產業的基石,不了解它們的話,就寫不出高效的代碼,就進不了大廠。

這裡舉幾個例子:

我們編寫的程序都是運行在操作系統之上的,不了解操作系統的基本運行原理,簡直就是扯淡。

程序 = 數據結構 + 算法,這對菜鳥來說是一句空話,但是對大神來說就是看透本質。

C++、Python、C#、Java 等高級語言中的容器/集合其實就是對常用數據結構和算法的封裝,不了解數據結構和算法的話,那麼也玩不轉容器/集合。

以上這些基本概念,都是要學習C語言,甚至少量彙編的,沒有C語言和彙編打底,壓根就吃不透的。

很多小廠、外包公司、培訓班或者自學的小伙伴可能會反駁,說道:

我就不了解這些基本概念,但是我的代碼寫得就挺好的,領導安排的任務我都能完成。我覺得,了解這些概念對我現在的工作並沒有什麼幫助。

嗯,這就是典型的碼農思維,而不是專家思維,以後可能會遭遇危機。

增刪改查和業務開發都是重複性地勞動,它們的可替代性非常強,如果我們的編碼能力一直停留在這個層面,那麼吃的就是青春飯,早晚會被年輕人拍死在沙灘上。

我面試過很多程序員,說實話,有些 30 多歲的大叔,還不如剛畢業的小哥哥給力,他們連基本的概念都搞不懂,只會展示自己做了多少項目。

哎,這種項目,做 2 個和做 20 個有什麼區別呢?都工作五六年了,你怎麼一點都沒進步呢?

有人可能會說,我就想做一個寫代碼的美男子,不想進步,不行嗎?對,一般都不行!

因為隨著年齡的增長,你的工資會越來越高,精力會越來越少,和擁有相同能力的年輕人相比,你除了多出幾年的社會歷練,並沒有什麼競爭優勢,所以結局就是中年危機,或者工資封頂。

說白了,你得跳過「靠體力吃飯」的階段,升級到「靠經驗吃飯」的階段,只有這樣才能端穩鐵飯碗。


http://m.biancheng.net/view/9764.html

i love you 3000
最新回復 (0)
返回
發新帖