学习计算机编程有很多方向如果你没有一个正确的路线,那么就会:
就会跟上面所说的那样,被迫成为一个全栈,这是比较尴尬的。
若你想比较准确的针对某个方向学习,那就继续往下看吧。
一、程序员分为哪几个方向
随着编程技术在各方面的应用,传统程序员的工作逐渐多样化,衍生出来了很多方面。
一般来说程序员分为 前端、移动开发、后端、测试、运维、数据、硬件、通信、人工智能。
在技术层面这几个类别可以按照下面的方式一句话介绍:
前端/移动开发 一般指可视的用户界面,例如一个网站的页面、手机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这些玩具的开发(玩耍)经验,在此并不敢乱推荐,希望有会的同学评论区可以补充。