學習計算機編程有很多方向如果你沒有一個正確的路線,那么就會:
就會跟上面所說的那樣,被迫成為一個全棧,這是比較尷尬的。
若你想比較準確的針對某個方向學習,那就繼續往下看吧。
一、程序員分為哪幾個方向
隨著編程技術在各方面的應用,傳統程序員的工作逐漸多樣化,衍生出來了很多方面。
一般來說程序員分為 前端、移動開發、后端、測試、運維、數據、硬件、通信、人工智能。
在技術層面這幾個類別可以按照下面的方式一句話介紹:
前端/移動開發 一般指可視的用戶界面,例如一個網站的頁面、手機APP客戶端、移動設備電視之類的界面等,制作這些頁面的工程師被稱為 前端工程師/移動開發工程師。
后端 一般指處理邏輯、數據交互這一方向,例如在一個站點中,后端工程師指在服務器編寫業務邏輯代碼的這部分人,一個網站若需要有 登錄/注冊 功能,單獨有一個前端頁面是無法完成的,必須有后端將用戶輸入的帳號密碼拿去數據驗證,而這一動作需要代碼編寫在服務器上,則編寫這一部分代碼的人就是 后端工程師。
測試 在一個產品的開發中,測試工程師 對產品進行測試,找到其中問題,幫助產品迭代、完善。測試工程師 包括硬件測試、滲透測試、自動化測試。而 自動化測試工程師 需要通過編寫代碼完成工作。
運維 一般是指 數據庫管理員DBA(database administrator)、系統管理員、網絡工程師、自動化運維工程師 等。一般這一部分人員是對系統進行管理,數據庫管理員DBA 與 自動化運維工程師 則是通過編寫代碼完成工作。
數據/人工智能 數據一般跟程序員相關的一般指 數據分析師、數據挖掘,而基礎數據又與 人工智能 相關,這3個職業一般以分析數據、挖掘數據、處理數據為主。
硬件/通信 硬件與通信方向兩者關聯也十分密切,硬件包括 嵌入式工程師(硬件單片機開發)、驅動開發 等,通信方向作者不是很熟在此就不過多介紹,但兩個方向部分職業均需要代碼參與。
二、這些方向包含哪些具體職業方向
以下職業從招聘網站統計(非所有方向)的大部分程序員對應方向。
前端/移動開發: HTML5、Web前端、JavaScript前端 、安卓、IOS、移動端開發、unity3D、CoCos2DX
后端: Java、C++、.Net、Perl、PHP、C#、Python、C語言、視頻\圖形開發、Golang、Node.js、GIS工程師、Delphi
測試: 測試開發、自動化測試、滲透測試
運維: 自動化運維工程師、DBA
數據/人工智能: 數據挖掘、數據分析師、算法工程師、圖像識別、人工智能、智能駕駛、深度學習、語言識別、自然語言處理
硬件/通信: 嵌入式工程師、驅動開發
是不是覺得現在一頭霧水,如何對應職位走好第一步呢?到底最開始該學啥呢?
三、這些 職業/方向
3.1 前端/移動開發
HTML5、Web前端、JavaScript前端 、安卓、IOS、移動端 開發學習第一步:
目前來說,前端/移動開發 分為跨平臺與原生。跨平臺指一項“編寫技術”可以同時在多個平臺上應用;例如制作一個網頁,這個網頁可以生成一個APP,又或者是桌面軟件,這個技術就是跨平臺技術,目前來說學習了 HTML、CSS、JS 即可對跨平臺技術快速上手,大部分的跨平臺技術都類似于 HTML、CSS、JS,甚至是兼容于這些語言。由此可知,第一步學習 HTML、CSS、JS 準沒錯,這一點 get 到了嗎?
相關的書籍推薦如下(書籍我詳細選過了,是適合初學者學習的內容):
首先我推薦第2本入門書籍,如果入門不懂可以私聊我(1_bit)喲:
學習完畢后咱們可以加深一下:
unity3D、CoCos2DX:
為什么說 unity3D 和 CoCos2DX 是前端呢?其實這兩者是游戲開發,屬于游戲開發中的客戶端制作,并且可以使用 unity3D 制作VR軟件呢,unity 的基礎是 C#,CoCos 其實作者并不推薦,因為學會 unity 對于新手更為方便(作者遙想好多年前學習CoCos 的痛苦經歷)。
但是主要,學習 unity 需要必備的基礎編程語言知識,那就是 C#(C sharp),C# 的學習可以先學習C語言再學習C#會比較輕松,咱們從最基礎開始吧,那就先開始學習 C 語言。
首先推薦2本 C語言書籍如下(如果入門不懂可以私聊我):
咱們再推薦第2本 C# 語言學習的書籍:
咱們繼續推薦第2本 C++ 語言學習的書籍:
接著就是咱們最后的主角 unity了:
3.2 后端
在后端開發中,一般 Golang、Java、PHP、Python 偏向于 Web 后端開發。
若全棧開發則可以學習HTML、CSS、JS,隨后學習 Golang、Java、PHP、Python、C# 即可,推薦學習書籍如下:
學習完基礎編程語言后再學習對應的 web 開發,學習 web 開發一般都會有例如 MVC 的框架,但必須要學會基礎的編程語言,否則將無法學習,推薦書籍如下:
在于 web 方面,Node.js 更是“大前端”,就像全棧一樣,但是基礎是 JavaScript,這個一定要學習。推薦 Node.js 的學習書籍:
在后端開發中 C#/.Net、C++、C語言、Delphi、Perl、視頻、圖形開發 基本上學習方向相似,由于視頻和圖形開發屬于后期內容,在此不過多介紹(作者本人對于這方面其實了解不多),視頻和圖形開發由于注重效率,也多數用 C++ 之類的高效率語言為主,所以前期入門學習 C++/C 沒什么問題。
C/C++ 和 C# 在之前都有推薦,在此先推薦 .Net 相關。.Net 一般開發桌面應用軟件,直接拖拽完成界面制作,非常簡單。C# 的桌面開發作者在知乎暫時沒找到合適的書籍推薦,在此就不進行推薦了。
C++ 可以制作桌面軟件,學習QT即可,推薦書籍如下:
Delphi 是一個 windows 下的快速應用程序開發工具,但是在國內并不是很火,但是也是很強大,作者的第一本書就是 Delphi(國內資源較少,初學者注意喲)。推薦書籍如下:
Perl廣泛用在 Web 開發、數據處理和系統管理中,不過不建議新手直接了解,因為這一類開發涉及別的知識不一定能夠看明白,推薦書籍如下:
3.3 測試
測試開發、自動化測試、滲透測試 這三個類別中,在此只對新手介紹 自動化測試,因為其他兩者需要一定的額外知識,而自動化測試較為基礎,如果是新手學習完 python 之類的語言后,可以進階到自動化測試,這樣也是較為平滑的過渡。當然自動化測試還可以別的技術實現,在此介紹 python自動化測試 是因為 python 自動化測試對新手較為友好。
推薦自動化測試的書籍如下:
3.4 運維
自動化運維工程師、DBA 這兩者其實技術上交互并不大,咱們先說自動化運維。
說到自動化運維我還想到我一個朋友跟我請教過 python 的自動化運維,他當時想做一個自動化的運維平臺方便他日后的工作,我也是從此才知道原來自動化運維,開始一直沒把運維跟編程聯系到一起,因為那一塊我也不是特別熟悉吧。
當然自動化運維也不一定是只有 python 才可以實現,但是python 對于新手來說這是較為平滑的過渡。推薦書籍如下:
接下來說道DBA數據庫管理員了,數據庫一般使用 sql 語言,以 sql 語言為基礎操作數據庫。對于后端來說,sql 也是很重要必須要掌握的語言之一,因為當下應用數據庫已經成為不可或缺的一部分了。
首先推薦入門的 sql 語言書籍,由于 mysql、sql server 等數據庫都是使用 sql 語言,咱們現在以 mysql 為例學習是最好的(mysql 從安裝、測試上來說對于新手較為友好):
3.5 數據/人工智能
數據挖掘、數據分析師、圖像識別、人工智能、智能駕駛、深度學習、語言識別、自然語言處理 這些 方向/職位 對于新手最簡單的方式是使用 python,因為 python 語言擁有強大的第三方庫,可以很好的上手這些方面;當然,若在正式的開發中 python 開發此類產品并不使用,因為 python 在效率上有著天然的劣勢,不過對于新手來說使用 python 學習這些內容是最好的選擇。
以下書籍需學習完 python 之后。
數據挖掘/數據分析師 推薦書籍如下:
圖像識別書籍推薦如下(opencv 是python的一個圖像識別庫,使用opencv進行圖形處理很方便,并且 opencv 也有C++庫,到正式開發后直接使用C++也非常方便):
人工智能/智能駕駛/機器學習 書籍推薦如下(機器學習這些都屬于人工智能這一個學科內,所以在此直接推薦機器學習):
語言識別/自然語言處理 書籍推薦如下(這兩者具有相關性,學習自然語言處理后對語言識別有一定幫助):
算法工程師這一類就建議大家刷題了,哈哈哈。
3.6 硬件/通信
嵌入式工程師、驅動開發 對于這方面并不是很熟悉,電子之類的肯定要會。本人只是有過樹莓派、arduino這些玩具的開發(玩耍)經驗,在此并不敢亂推薦,希望有會的同學評論區可以補充。