1. 程式人生 > 其它 >一年精通,三年熟悉,五年瞭解,十年用過!C++真的這麼難嗎?

一年精通,三年熟悉,五年瞭解,十年用過!C++真的這麼難嗎?

C++有句俗話說:一年精通 三年熟悉 五年瞭解 十年用過

如果可以把C++程式設計師分層的話,看看你在第幾層?


第0層

掌握基本的C++語法,會寫一些基本的if-else,for迴圈,switch-case等。可以簡單的使用C++的IDE,把書上的程式碼一行一行敲上去,會點選Run按鈕執行程式,可以輸出hello world。

第1層

熟悉C++大多數語法,瞭解面向過程與面向物件程式設計思想,瞭解封裝、繼承、多型的合法使用,瞭解指標、函式指標、回撥函式、異常處理、檔案操作、STL的使用,可以解決簡單的編譯連結報錯問題。

但缺乏獨立思考的能力,甚至都不知道如何提問,一般面向百度程式設計,熟練掌握ctrl+c和ctrl+v操作,只要程式達到過預期的結果就已滿足,可以簡單的做出個Demo。

第2層

熟練掌握C++大多數語法,熟練背誦大多數C++面經。

瞭解C++11、C++14、C++17甚至是C++20的新特性,面試技術單點時沒什麼問題,說起來頭頭是道,但做起來一塌糊塗;

沒有從0到1做公司級專案的能力,著重於完成某項子功能,沒有設計圖紙的能力,可以在現有框架上增刪改,程式碼可讀性、可擴充套件性、邊界條件處理、程式效能、編碼規範等問題往往不太考慮。

第3層

讀過一些經典C++書籍,對STL、BOOST等經典庫可以熟練使用,看過部分經典庫的部分原始碼,瞭解基本原理,掌握常見的設計模式,掌握C++的好多奇技淫巧,對程式碼有潔癖,按照編碼規範程式設計,會對邊界條件做詳盡處理,程式碼可讀性較高。

寫程式碼時經常炫技,程式碼騷氣逼人,自認為可以碾壓大多數人。然而炫技通常會導致開發週期長,程式碼膨脹,後期維護難,其他普羅大眾通常看不懂這種炫技的程式碼。

第4層

重劍無鋒,大巧不工,不再炫技開發,簡單合理的能夠完成需求就好。

熟練掌握作業系統,編譯原理,掌握編譯與連結的大多數知識,瞭解編譯器背後的故事,熟練使用各種除錯工具,各種效能分析工具;

瞭解記憶體對齊,知道如何除錯記憶體洩漏問題,如何除錯死鎖問題,深入理解CPU Cache、檔案系統、程序與執行緒、TCP/IP、記憶體模型等知識,參與開發過系統級的專案開發;

動手能力強,接到需求後有自己的想法,可以快速給到實現方案。瞭解C++的各種方案優缺點,常見的坑以及各種避坑方法。

第5層

從0到1設計開發過系統級、高效能的專案,並被一定量級的使用者使用過。

不再著重於技術單點的實現方案,完全領悟並靈活使用各種設計模式,更著重於整體架構的設計,即設計那一張工程圖紙,給出整體的解決方案,追求設計更合理的架構,著重於模組劃分是否清晰,著重於高內聚低耦合,著重於系統的健壯性,靈活可擴充套件性,可以應對大規模需求的迭代與變更。

第6層

混跡於國內國際各種C++開發者大會,各種演講,分享自己的開發心得,分享架構設計方案,受眾生膜拜。例如侯捷、張銀奎、吳詠煒、潘愛民等(排名不分先後)。


第7層

C++標準委員會成員(儘管一堆人在噴他們腦袋有坑,但不可否認,他們確實就是頂尖的C++程式設計師)


第8層

Bjarne Stroustrup,凡是我們C門子弟,無需多言吧。yyds! C++之父。


最後說幾句,學習C++確實挺苦,精通又有什麼用呢,面試造火箭,入職不還是擰螺絲嘛!

語言可能沒有那麼重要,我們多數人可能永遠也到不了第6層,但我們可以嘗試去精通某個領域,例如精通人臉識別、自動駕駛、遊戲開發、音視訊開發、網路開發、移動端開發相關的業務等。

我們也要著重於提高自己的這三種能力:

◐分析問題的能力

◐解決問題的能力

◐掌控全域性的能力

- End -

—————————————

不管你是轉行也好,初學也罷,進階也可,如果你想學程式設計,進階程式設計師~

【值得關注】我的 程式設計學習交流俱樂部 !【點選進入】