1. 程式人生 > 實用技巧 >C++開發的學習路線

C++開發的學習路線

目錄

前言

瞭解C++開發的學習路線和推薦基礎內容。需要明確認識的是,語言學習僅僅是一小部分,與專案實際開發之間有著很大的鴻溝。 下文將詳細介紹。

C++/C與Java的區別

C++/C的語言粒度非常細,機制很多。效能確實高,但語言本身的包袱重,稱為”造輪子“的語言,什麼都能做。Java相比有著明顯“生態圈”的概念,本身服務於網際網路軟體開發,主要用作後端開發、客戶端開發居多,學習和應用領域相對非常清楚。

C++偏向底層,比Java難一些

C++做通訊公司或者網際網路公司的後臺開發居多(也包括部分遊戲公司),也就是服務端開發 ,當然其也有很多細分的工作崗位:做資料處理和分析;做基礎協議和通訊;做服務端底層應用優化;做後臺系統的驅動和核心。

C++語言學習路線

C語言最重要的就是指標和記憶體管理。C++是對C語言的擴充和延申,可以理解為在C語言里加入一些面向物件的特性,使得程式碼能更好的複用、擴充套件和工程化,這是大型專案必備的要素。比如C++新加入的面向物件的特性:封裝、繼承與多型,更高階的主題類似泛型和模板、STL庫等等。

語言學習不要脫太久,高強度壓下來

推薦書籍

《Essential C++》(侯捷譯):適合從C語言過渡到C++的學習

《C++ Primer》

《Effective C++》

《More Effective C++》

《C++標準程式庫》

《深度探索C++物件模型》(內容很深,進階內容)

基礎四大件

四大件包括資料結構預演算法、計算機網路、作業系統、設計模式。只要未來想從事變成崗位,這4個理論基礎都必須掌握。基礎四大件比程式語言本身要重要的多!

資料結構與演算法

直接決定能否拿到offer。

常見的資料結構需要掌握,比如字串、連結串列、二叉樹、堆、棧、佇列、雜湊表。

常見演算法需要掌握,比如查詢、排序、動態規劃,多刷題。

推薦書籍:

《大話資料結構》

《演算法》(Java語言)

《劍指offer》(找工作必看)

其餘精力建議全部用來刷題。

計算機網路

可以狹義理解為TCP/IP協議棧,其可以說是當下網際網路通訊的基石。

主要要做到對於協議棧原理的瞭解,包括裡面的具體協議:ARP協議、IP協議、ICMP協議、TCP、UDP協議、DNS協議、HTTP協議、HTTPS協議。

推薦書籍:

《TCP/IP詳解》

作業系統

該領域在面試時頻次比較高的問題:

  • 程序和執行緒

    由此引發多執行緒的一些問題,比如原子性、併發、鎖

  • 記憶體

    包括記憶體分佈、記憶體排程的演算法

推薦書籍:

《深入理解作業系統》

設計模式

倒不是說23種設計模式都要熟悉,常見的需要掌握,比如單例、工廠、代理、策略模式、模板方法。

推薦書籍:

《大話設計模式》

應用和程式設計實踐

涉及到工具和程式設計環境。

Linux作業系統學習

實際企業級開發中,尤其是後端開發或者服務端開發幾乎都是使用Linux作業系統:

  • 常見的Linux系統操作指令要掌握。

  • 基本的shell程式設計要熟悉

    生產力工具,一些批處理和自動化的指令碼

推薦書籍:

《鳥哥的Linux私房菜》

《Linux就該這麼學》(通俗易懂)

編譯和除錯工具

Win10上的VS基於微軟的MS編譯器,有視覺化的介面。但在公司工作中,Linux平臺的編譯器必須掌握,最重要的就是GCC。

有些公司有定製過的交叉編譯工具

實際專案的編譯動作叫make,編譯動作過程是寫在makefile檔案中。因此需要會寫makefile檔案,裡面的規則要求掌握,學會設計和編寫整個編譯過程。

Win10用vs除錯:打斷點、執行。在通訊公司和網際網路公司中的後臺開發中,也是使用Linux作業系統,主要使用GBD除錯工具,藉助進行程式碼除錯。

推薦書籍:

《debugging with gdb》中文版

GNU官方關於GCC的文件(對英文有一定要求)

GNU官方關於GDB的文件(對英文有一定要求)

《跟我一起寫makefile》陳皓

Linux程式設計環境

這部分主要學習Linux平臺具體的程式設計。

  • 學習Linux作業系統API的使用

  • 多執行緒程式設計

    服務端任務量大,多執行緒相關的東西無法避免。包括執行緒、資源、訊號、同步、互斥、鎖的程式設計實踐

  • 網路程式設計

    作業系統上的一些網路程式設計的API,包括一些IO函式的程式碼程式設計

推薦書籍:

《Unix環境高階程式設計》(必看)

《Linux高效能伺服器程式設計》

《POSIX多執行緒程式設計》