為什麼說C語言是菜鳥和大神的分水嶺?
作為一門古老的程式語言,C語言已經堅挺了好幾十年了,初學者從C語言入門,大學將C語言視為基礎課程。不管別人如何抨擊,如何唱衰,C語言就是屹立不倒;Java、C#、Python、PHP、Perl 等都有替代方案,它們都可以倒下,唯獨C語言不行。
程式是在記憶體中執行的(我們將在《載入記憶體,讓程式執行起來》一節中詳細說明),一名合格的程式設計師必須瞭解記憶體,學習C語言是瞭解記憶體佈局的最簡單、最直接、最有效的途徑,C語言簡直是為記憶體而生的,它比任何一門程式語言都貼近記憶體。
所謂記憶體,就是我們常說的記憶體條,就是下圖這個玩意,相信你肯定見過。

所有的程式都在拼盡全力節省記憶體,都在不遺餘力提高記憶體使用效率,計算機的整個發展過程都在圍繞記憶體打轉,不斷地優化記憶體佈局,以保證可以同時執行多個程式。
不瞭解記憶體,就學不會程序和執行緒,就沒有資格玩中大型專案,沒有資格開發底層元件,沒有資格架構一個系統,命中註定你就是一個菜鳥,成不了什麼氣候。

以上這點我有深刻的體會!工作期間我曾專注於網站開發,雖然能夠設計出介面漂亮、體驗良好的網頁,但是對記憶體洩漏、多執行緒、共享記憶體等底層概念一竅不通,感覺和周圍同事的差距很大,這讓我非常鬱悶,不知道如何突破。我曾多次嘗試學習記憶體和執行緒,也找了很多資料,但是無論如何都啃不懂,到頭來還是一頭霧水。
離職後我全職運營C語言中文網,於是決定再次系統、深入、全面地學習C語言,並結合C語言去了解一些記憶體知識,這個時候我才發現,原來C語言就是為記憶體而生的,C語言的設計和記憶體的佈局是嚴密貼合的,我因為學習C語言而吃透了記憶體,瞭解了計算機記憶體是如何分佈和組織的。
C語言無時無刻不在談記憶體,記憶體簡直就是如影隨形,你不得不去研究它。
至關重要的一點是,我能夠把記憶體和具體的程式設計知識以及程式的執行過程結合起來,真正做到了學以致用,讓概念落地,而不是空談,這才是最難得的。
另外一個驚喜是,攻克記憶體後我竟然也能夠理解程序和執行緒了,原來程序和執行緒也是圍繞記憶體打轉的,從一定程度上講,它們的存在也是為了更加高效地利用記憶體。
從C語言到記憶體,從記憶體到程序和執行緒,環環相扣:不學C語言就吃不透記憶體,不學記憶體就吃不透程序和執行緒。

我感覺自己瞬間昇華了,達到了一個新的高度,之前的很多謎團都解開了,和大神交流也沒有障礙了。
「記憶體 + 程序 + 執行緒」這幾個最基本的計算機概念是菜鳥和大神的分水嶺,也只有學習C語言才能透徹地理解它們。Java、C#、PHP、Python、JavaScript 程式設計師工作幾年後會遇到瓶頸,有很多人會回來學習C語言,重拾底層概念,讓自己再次突破。

學習從來不是一個人的事情,要有個相互監督的夥伴,工作需要學習C/C++或者為了入行、轉行學習C/C++的夥伴可以私信回覆小編“學習”領取全套免費C/C++學習資料、視訊
你想成為一個什麼樣的程式設計師?