天天看點

為什麼要學習C++

語言之争是程式員永遠不會疲倦的閑暇話題,初學者的語言選擇也是大家所津津樂道的。回望這幾年,随着Android, ios的來勢洶洶,不少初學者都喜歡以Java, Objective-C作為自己的第一門語言。在這樣的大環境之下,讨論 C++ 還有什麼意義麼?

在瞎扯這個問題之前,我們先來看看為啥初學者都選擇Java, Objective-C。估計原因很簡單,就是入門容易。當然,這容易是相對于C++而言的。如果學C++,你肯定要看《C++ primer》這本經典吧?泛型程式設計,也是需要了解的,是以《C++标準程式庫》這書也不能放過吧?這兩本書,頁碼加起來不下1600頁,杯具的是,即使你将這兩本書讀得滾瓜爛熟,你也寫不出一個最簡單的視窗程式。如果你想寫Windows的視窗程式,那麼你還要再看一本《Windows 程式設計》,這又是一本厚達1300頁的巨著。不過,噩夢遠遠還沒有結束,因為學完了這些,你的C++水準還是處于一個相對低階的水準。為了跨越這個階段,你還必須要看《Effect C++》,《More Effect C++》,《Effect STL》等等進階名作。當你已經将如上的資料爛熟于心的時候,此時你才不是菜鳥,當然也不會是個老鳥,但已經能夠憑着這點小資本到人才市場碰碰運氣了。如果你還想在繼續往上提升,那麼這就和你專注的領域有關了,專注于系統的,什麼《作業系統原理》不能放過吧?專注于編譯器的,《編譯原理》這些不可或缺吧?專注于底層的,一大堆的CPU的datasheet你是不能視而不見吧?隻有精通了某個領域,你才能是老鳥。

入門簡單,這個最基礎的因素決定了初學者為什麼選擇了Java, Objective-C。不過這對于他們是無可指責的,因為現在的公司,都不願意花錢去教育訓練新人,你是打算學2個月的Java, Objective-C就能找到工作呢,還是想花個2年時間學C++才能上崗?我想大部分人都應該選擇是前者。于是,直接結果就是,學Java, Objective-C的初學者幾何性地倍增。菜鳥不可能永遠是菜鳥,他們也會有成為高手的一天。因為初學者的基數很大,是以成為高手的數量會不少,這對于現在已經是Java, Objective-C的高手,不可謂不是一個沖擊。但對于C++的高手而言,雖然也是有所沖擊,但這沖擊卻比Java, Objective-C要小,因為C++的新生血液實在太少了。這個看似可悲的狀況,卻成了C++長期風險低于Java, Objective-C的一個理由。

C++還有一個最重要的特性,就是在某些領域具有不可替代的作用。驅動是要用C++吧?啟動代碼是要用C++吧?就連Android的的底層,也和C++脫不了關系。也許有人說,不是還有彙編麼?開玩笑,你用彙編寫一個架構試試,等寫出來,黃花菜也涼了。那麼C呢?呃,這個我不否認,C++很多地方都能用C來寫,甚至某些地方都隻能用C。但C和C++就是一對孿生兄弟,學的是C++,寫的是C,這會有什麼困難麼?是以為什麼C和C++兩種語言的分隔不是用逗号,而是用斜杠:C/C++。在這個領域裡面,還有能威脅到C++的統治地位的麼?C++所擅長的領域,是死水一潭,唯我獨尊。