程式設計真的有那麼難學嗎?其實不然,無非是沒找對方法罷了(以c/c++為例)

beiyou_linux發表於2020-12-01

背景

隨著網際網路及網際網路+深入蓬勃的發展,經過40餘年的時間洗禮,C/C++儼然已成為一門貴族語言,出色的效能使之成為高階語言中的效能王者。而在今天,它又扮演著什麼樣重要的角色呢?請往下看:

後端伺服器,移動網際網路後端,經典Windows介面開發,移動網際網路端介面開發,跨平臺介面開發,圖形分析,系統架構,應用設計,還有現在最為流行的分佈架構等一些新的技術領域。

這麼牛的語言,你是不是想知道怎樣學習和掌握它呢?接下來請看經過我們整理過C/C++工程師必備知識的思維導圖。

初學者看到這麼密集的知識點,是不是有點眼暈呢?的確,C/C++是一門知識面覆蓋很廣的學科。想學好C/C++的你並不需要慌張,內容雖多,但依然有法可依。只要有足夠的耐心和毅力,加上正確的學習方法,就不怕你學不好C/C++。

既然如此,C/C++開發到底需要學些什麼呢,又應該怎麼學呢?接下來一起來看看如何從零基礎學習C/C++開發,快速進入牛人之列,掌握這門貴族語言。

一、初級入門階段

在入門之初,首先要做的是通過C/C++語言的學習培養程式設計思維和動手能力,深刻理解程式導向和麵向物件的思想方法。這個階段你需要學習:

① C語言

資料型別、變數、記憶體佈局、指標基礎;

字串、一維陣列、二維陣列;

一級指標,二級指標,三級指標,N級指標概念,指標陣列和陣列指標;

結構體、檔案的使用;

動態庫的封裝和設計;

函式指標回撥函式。

② C++語言

物件導向程式設計思想;

類的封裝,構造和析構、靜態成員、物件管理;

類的構造(有參建構函式、無參構造、拷貝構造、預設建構函式)和析構;

物件動態管理、友元函式、友元類、操作符過載;

C++編譯器物件管理模型分析;

類物件的動態管理(new/delete);

友元函式和友元類;

運算子過載(一元運算子、二元運算子、運算子過載難點、專案開發中的運算子過載);

類的繼承、多繼承及其二義性、虛繼承;

多型(概念、意義、原理剖析、多型案例);

虛擬函式、純虛擬函式、抽象類(面向抽象類程式設計思想案例);

函式模板、類别範本,模板的繼承;

C++型別轉換;

C++輸入輸出流(標準I/O 檔案I/O 字元流I/O);

C++異常處理(異常機制、異常型別、異常變數、異常層次結構、標準異常庫);

③ 常見常用的IDE開發工具

諸如Windows平臺VC系列:VC++6.0(比較古老) ;Visual Studio2013, Visual Studio2015;Mac平臺的XCode系列,還有CodeBlock,另附一些高階編輯器Notepad++, EditPlus,UE等一些開發工具的常用設定和一些常見快捷鍵的使用。

此階段的學習難度係數不大,掌握這些內容之後,可以做些簡單的小專案。當然瞭如果你想用這些技能找工作的話確實是比較困難的。這時你還應該在加把勁進一步學習第二階段。

推薦一下自己的linuxC/C++交流群:973961276!整理了一些個人覺得比較好的學習書籍、視訊資料以及大廠面經視訊共享在群檔案裡面,有需要的小夥伴可以自行新增哦!~

學習程式設計是個枯燥的過程,所以在學習理論知識感覺到無趣以至於堅持不下去的時候可以自己動手寫幾個實用的小專案或者功能,這種成就感正是學習程式設計的意義所在,而這會讓你繼續保持對程式設計的熱情。

下面這個GIF是我剛寫的一個塔防小遊戲,給初學程式設計的朋友參考一下,如果需要原始碼的話可以進群獲取哦

二、C/C++開發進階

這一階段的目標才是達到C/C++軟體工程師開發行業的基本要求,這個階段是我們走向C/C++開發的進階之路,更是一個讓自己找份薪水比較體面的工作的籌碼。

如果在此部分遇到不懂的或者沒有見過的知識點和名詞,可先將本文收藏,供以後細細研讀。

那麼這個階段,我們又應該掌握什麼呢,繼續往下看:

① C++進階之STL

STL = Standard Template Library,即標準模板庫。這是提高開發效率的極品工具。通過學習此階段,應掌握泛型程式設計技巧,理解容器類在C++語言中的應用模式,以及熟練掌握全部STL類的使用方法。

② C++進階之設計模式

決定一個專案成敗最重要的因素是專案總體的設計,通過本階段的學習,可掌握物件導向程式設計中重要的一環,是編碼前建模的技巧所在。單例模式;工廠模式;代理模式;迭代模式等,這些都是你要掌握的哦。

③ C++進階之資料結構基礎

這是所有程式語言中最應該學習的部分,程式組成的基礎之一。

順序儲存、鏈式儲存、迴圈連結串列;

雙向連結串列、棧(順序和鏈式)、佇列(順序和鏈式);

棧的應用、樹基本概念及遍歷、二叉樹;

排序演算法、並歸演算法、選擇、插入、快速、希爾。

以上這些內容你知道嗎?

④ C++進階之UI介面開發

掌握QT類庫構架,圖形介面開發模型;

掌握QT開發技巧,訊息機制,圖形處理;

掌握QT網路程式設計,UDP,TCP使用方式;

掌握QT檔案處理方式,序列化;

掌握QT在windows,linux,ios,android不同平臺下的移植技術。

⑤ C++進階之Unix/Linux網路伺服器

掌握Unix/Linux平臺開發方式;

熟練使用系統呼叫;

熟練Unix/Linux記憶體管理,程式,執行緒排程;

熟悉網路伺服器開發方式,熟練編寫TCP,UCP網路服務程式;

掌握同步/非同步IO模型在網路程式設計中的使用方式。

⑥ C++進階之資料庫開發

掌握SQL語言的實用技巧。Oracle,MySQL資料庫的使用方式。

如果你能熟練掌握以上列出的技能,具備解決複雜問題和技術難點的能力,而且你能獨立開發一些比較複雜的功能模組,那麼很榮幸地告訴你,你已經達到中級水平,薪資過萬對你來說簡直是小菜一碟。

三、C++開發高階

讀到此處的你,相信你有更高的目標。即是當下炙手可熱的全棧開發工程師,既曉前端,又通後臺。快速定位問題,解決問題對他們來說已是小菜一碟,就是人們常說的神祕大牛,只在公司技術攻關的時候才會才看到他們的身影。

①此階段軟體開發工作所需的知識和技能相對較難,高階軟體工程師編碼熟練度和規範性需要達到一定要求;

②具備一定的專案能力(包括除錯能力、文件編寫能力、測試能力等)和綜合技術素質(包括對軟體生命週期的理解、對設計模式的理解、必備的行業知識和經驗等);.

③瞭解主流的後臺技術和前後端協作方式,能從全域性角度理解專案的整個生命週期。

如果你能熟練掌握以上三個階段的知識技能,那麼你就可以滿足C++開發行業的高階需求。


零聲學院:一切只為渴望更優秀的你

C/C++在近40年的發展歷程中,一直以來都被獵頭作為競相角逐的弄潮兒。零聲學院的課程從市場需求,技術潮流出發,將企業需要掌握的技術做了系統性的整合。同時,在課程的設計上充分考慮到大部分學員零基礎的情況,各模組相互銜接,逐步升級,讓學員在學習過程中能更好地過渡和理解吸收。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
beiyou

相關文章