一年精通,三年熟悉,五年瞭解,十年用過!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 -
—————————————
不管你是轉行也好,初學也罷,進階也可,如果你想學程式設計,進階程式設計師~
【值得關注】我的 程式設計學習交流俱樂部 !【點選進入】