如何快速学习一种后端编程语言(自学超级加速版)

717 阅读6分钟

最近在转语言(java转go),小伙伴被我学习新语言的速度震撼到了,于是乎写出了这个文章

2022年01月13日 第一次写
2022年05月26日 添加前端

注:本文不涉及超高难度的东西

第一件事:语言选择(分有基础和无基础的)

无基础版

首先要有一个思想:语言只是一个工具,不是全部,只不过合适不合适的问题,java也能写人工智能,python也可以写web服务器,在选择语言方面就不要过多考虑,看哪个顺眼就选哪个。

不要入门选C!不要入门选C!不要入门选C!(嵌入式除外),我不知道哪哪个傻屌说的,说程序员入门一定要选C,劝退了多少人。

首先,先搞清楚一件事,学习是有学习成本的(时间,精力,金钱),c语言在所有编程里算偏难的了(个人见解)。

首先,你的入门语言一定要参考一下几点:

1、这个语言不能有指针(因为需要对内存有感觉)
2、语言不能太新,2010年之后出现的语言(文档太少)
3、这个语言不能太老,1990年之前的请慎重考虑(要么不更新,要么就是一坨屎山)

总上所述,最好的入门语言莫过于python,java

前端就不用说了吧,无脑H5,C3,ES5/6

有基础版

先明确你要做什么,你为什么要学这门语言,这个语言的最大特点是什么(我选择go是因为go比java多了指针,而且go程比java的线程强)。

还有一点,要学会看英文注解,学会看源码(我目前在学flutter,没啥教程,不看源码坑一堆)。

第二件事:开始学习

无论有无基础,建议看视频学,视频里用啥系统你用啥系统,先照着做,后期再慢慢换成自己喜欢的系统。

有的小伙伴说看书又快又好,我就呵呵了,我当时学dubbo买的书,还是别人推荐的,10行代码4个BUG,怎么看?我是学知识去了还是学BUG去了。

第一阶段

基础阶段

第一阶段的开始肯定是从基础开始,我也看过很多课,一大坨**,时长十几个小时(比如某硅谷,某马...),纯属浪费时间,建议学完以下东西就可以跳到下一个阶段了。

!!!这些必须会!!!
数据基本类型
加减乘除
各种类型、结构初始化
list的增删改查
map的增删改查
面向对象(非面向对象语言就算了)
socket通讯实现
http通讯实现
项目工程化

这里补充一下,学习时没必要杠精,之前教一个小朋友,数据基础类型学了一个星期,我问在忙啥,他说他在背所有数据类型的取值范围和Integer所有方法......大可不必这样,后期多敲代码就会熟练的。

加强阶段

接下来的路会比之前难走一些,因为要加强或学习一些东西,甚至这个阶段可以简单了解一下就行,要么基本用不上,要么要结合业务。

主要内容就是语言特性,例如java的面向对象、泛型,go的指针和go程

(PS:提一嘴,java的反射前期不要学,会死人的)

第二阶段

辅助技术

第二阶段就要学一些和这个语言没多大关系的东西,比如SQL(这玩意必须会且熟练,不然工作都找不到),git,一般会在这里学一些简单的html、css、js、jquery,不然以后成天背接口测试吗

工程

未来敲代码都是工程化的,要么有管理工具,要么有具体文件存放位置,这个非常重要。

软件里工程项目会有一个东西,叫架构,这个是必学的,如java的spring,go的beego......如果不知道需要学什么架构,下载一个招聘软件,去搜你的语言就会出现一大堆职位,一般技术要求里都会写,然后拿着那个架构去B站上搜,就能搜到教程,如果厉害点的直接看书。

其实这里最好的方式是git上拉下来一个代码,看看哪部分放在哪,是干嘛的。

整合

现在你已经有了充足的技术,这些技术足够你做一个小项目,去网上抄一个小项目(指工期小于一个月的)

第三件事:项目

认清当前的自己情况

经过之前的工作,你差不错可以做个小项目,这时会有点飘,呀~老子做出来项目了~我什么都会了,但准确来说你啥都不会,因为从某种意义上来讲项目不是你做的,而是抄的,这里为啥会有个按钮?为什么保存之前还要去数据库里搜一遍?电商秒杀为啥要锁数据?在抄项目时并没有自己去想过,所谓的解决方案都是教程里给的,甚至照着视频一个字母一个字母敲的,这样是绝对不行的。你需要将自己的思想去结合自己的技术。

做一个属于自己的项目

现在从某种意义上来说你已经准备好了你的知识,接下来做一个属于自己的项目吧,要注入自己的灵魂,而且要学会给自己加需求,因为项目是自己的,任何需求都可以(比如最近我博客上的新功能,异步爬取岛国爱情动作电影并保存、管理、分类)。

我的项目是个人博客(正经版本),从我上大学做到现在的项目,里面加了一堆莫名其妙的功能,欢迎大家来支持我SSM个人博客项目

第四件事:开始搞事

如果基础不好的可以先从设计模式、通讯协议、数据结构与算法方面入手(今早入手,不然真的只会CRUD,等着被优化吧)。

要记得最开始学这门语言的目的,如果可以开始靠拢架构、中间件方向(我学go是想做自己的F5架构)。