除了語言本身,程序員還應掌握哪些技能

​來源:公衆號【編程珠璣】

作者:守望先生

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到底學什麼?

在線就能用的Linux我給你找好了

GDB調試入門,看這篇就夠了

換個角度說Makefile

 

關注公衆號【編程珠璣】,獲取更多Linux/C/C++/數據結構與算法/計算機基礎/工具等原創技術文章。後臺免費獲取經典電子書和視頻資源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章