來源:公衆號【編程珠璣】
作者:守望先生
ID:shouwangxiansheng
前言
作爲C/C++開發,其語言的掌握自然是非常重要的,當然了,與此相關的算法,計算機基礎,網絡等知識也都是需要學習瞭解的,那麼除此之外,還有哪些是建議掌握的呢?
Linux
這個我在《學Linux到底學什麼》中已經說到過了,作爲C/C++開發, 很大程度都是需要和Linux打交道的,既然如此,那麼最基本的命令掌握是必須的。公衆號編程珠璣後臺回覆【linux】即可查看歷史Linux相關文章。
畫圖
開發過程中,難免做方案,而方案中自然會涉及到架構圖,流程圖,時序圖。一個好的圖能夠幫助你或者其他人更好地梳理和理解方案。你可以選擇在線的 draw.io,http://www.processon.com,或者visio,Enterprise Architect(簡稱EA)。這一塊也是我個人的弱項,歡迎留言分享你認爲不錯的畫圖工具。
版本控制工具
毋庸置疑,每個公司都有版本控制工具,也許你們用的svn,也許用的git,無論如何,你都需要一套工具管理維護你的代碼,以便你隨時吃後悔藥。對於git學習,如果是基本的命令使用,網上隨時可以查,但是如果想更進一步瞭解,建議閱讀《pro git》,網址爲:https://www.progit.cn/
構建工具
代碼變成可部署上線的工程,同樣需要構建工具,也許你使用最原始的makefile(認識makefile),或者Cmake,或者blade,或是bazel,都沒有關係,根據項目實際情況或者自己喜好選擇即可。不過仍然建議學習makefile,更能瞭解其構建過程,。當然,對於C/C++,你應該瞭解的是一些編譯鏈接相關的東西,在公衆號編程珠璣後臺回覆【編譯鏈接】即可查看相關文章。
調試手段
大多數問題都可以通過日誌,分析代碼來解決,有時候,爲了方便,還可以藉助調試工具,例如GDB。
可以參考《GDB調試指南》。
單元測試
單元測試需要根據實際項目需求進行選擇,要做單元測試,本身投入的時間可能比較多,但是長期來看是非常有利的。對於C/C++,可以瞭解google的gtest框架。這裏不多說。
工具性語言
無論是做測試,或是寫一個小功能,你都應該會一些工具性語言幫你幹活,例如Python,Shell,它們的特點是出活快。這裏我在《談談對Python的看法》中也已經說過了。
數據庫
現代應用大多數都離不開數據庫,而最常用的關係型數據庫之一,非mysql莫屬了,然而如果涉及緩存,分佈式等,redis是一個不錯的選擇。NOSQL中,除了redis還有很多,但是redis目前應用廣泛,使用ANSI C編寫,其源碼也非常值得學習借鑑,其中數據結構和算法的應用也會讓你受益頗多,這裏也推薦一本《redis設計與實現》,有興趣的可以瞭解一下。
科學上網
發現更大的世界。
Markdown
無論是寫總結還是週報,或是筆記,你都離不開記錄,那麼爲什麼要用markdown呢?我個人而言,我不喜歡在word中調格式,我只想專注我的內容,而且對於代碼類的展示,markdow更加方便,除此之外,markdown格式還有以下好處:
-
純文本保存,卻能展現豐富的格式,可以轉換爲html,pdf等格式
-
所寫既所得,不用過多專注格式
-
語法簡單易上手
-
各大平臺基本都支持,例如github,知乎等
-
代碼顯示友好
#include<stdio.h>
int main(void)
{
printf("hello\n");
return 0;
}
公衆號幾乎所有文章都是markdown格式編寫,然後藉助工具渲染所得。對於客戶端工具,可以嘗試一下typora 。
總結
以上就是個人總結的除了C/C++語言本身以外的其他技術性技能,歡迎留言補充。
關注公衆號【編程珠璣】,獲取更多Linux/C/C++/數據結構與算法/計算機基礎/工具等原創技術文章。後臺免費獲取經典電子書和視頻資源