Featured image of post 如何快速入门新的编程语言和框架?

如何快速入门新的编程语言和框架?

最近很多小伙伴儿通过各种途径咨询我关于学习技术方面的问题,我都一一回复了。这里也专门出一个总结,关于我个人这些年入门新的编程语言和框架的经验和技巧...

一. 前言

最近很多小伙伴儿咨询我关于学习技术方面的问题,我都一一回复了。这里也专门出一个总结,关于我个人这些年入门新的编程语言和框架的经验和技巧,来跟大家分享一下,希望能够所有帮助。

本次分享分为两个时期:

  • 有编程经验时期
  • 新手时期

二. 有编程经验时期

当我有了一定开发经验后,去学习一个新的编程语言或者框架,我会注意如下两点:

1. 寻找共性

编程语言

所有的编程语言或者框架,都不是凭空产生的。当前比较流行的语言,大都是类C语言,比如我们常见的Java、Python、JavaScript、Golang等等。

所以,我们学习的编程语言,除了特有的特性,大都是相似的,也就是它们的共性。我们只要理解和掌握这些类C语言的共性,就可以很快地掌握一门新的编程语言。

那么,哪些是共性呢?比如说变量、常量、运算符、判断、循环、函数、面向对象等等。

我们在学习一门新的编程语言的时候,是不是必然要学习如上这些共性的知识点?

那么,当你已经有一个编程语言的基础后,当你在学习和写代码的时候,这些共性可以直接使用你已学会的编程语言的知识去代入。

举个例子,比如我已经会Go了(不过,当你先学Go的话,可能不太知道面向对象是什么/狗头),要去学一下Python。

我需要做的就是代入:

  • Go语言声明变量是a := 1,考虑到Python没有强类型,那么就直接a = 1就完事了。

  • Go语言声明函数是func aFunction(username String) {},那么Python不过是换了个关键词,去掉了强类型,变成def aFunctino(username):,当然Python如果要申明类型也是可以的,写成def login(username: str):

  • 其中,比如运算符大都是一样的,判断也是类似。

  • 但是突然你发现,怎么Python的循环不一样,然后发现Python的循环好方便,但是其实原理还是和Go一样的。甚至,当你遇到不知道怎么处理的时候,直接来一波for (i := 0; i < count; i++)。当然,Python没法这么写。

除了我举的这些例子,还有比如正则、数据类型、数据结构等等,都可以作为共性来代入。

框架

其实,框架也是如此。此处以web框架为例,比如Python的Flask、Django、FastApi,Go的Gin,Node的express,Java的SpringBoot等,都是比较熟知的框架。

这些Web框架,都是依托于网络的,大都是http(s)请求,甚至其他TCP请求。我们可以只在网络层面来看,它们共性就是request和response。所以在网络层面就可以理解为,后端web框架就是一个接收request和response的东西。

那么,看具体框架的功能上,可以抽象出路由、中间件。

所以,对于一个web框架,其共性为request、response、路由、中间件。

因此,我们不管是使用Flask、Gin还是SpringBootd等,可以使用我们已有的框架知识去代入:

  • 如何接收request,比如获取request body、headers等
  • 如何使用中间件处理,比如使用中间件鉴权、传递上下文等
  • 如何配置路由,让接口对外暴露
  • 如何返回response,比如返回http status code、json等

那么,就可以完成一个新的web框架的入门了。

其它

除了编程语言和框架,其实还有很多别的都是拥有共性,可以快速入门的,比如Nginx和Apache,比如Linux发行版本,比如Kong和ApiSix,比如不同的数据库等等。甚至最近我发现,wasm并不是前端特有的,EBPF也在用wasm。

2. 看官方文档

编程语言的情况还比较少,更多是学习框架时,一定要看官方文档。

网上虽然有很多教程,但是毕竟是二次加工的,可能存在信息遗漏、版本更新等等问题。

官方文档可能比较生涩,但是它是最全最新的一手文档,会非常有助于少走弯路。

再次强调,一定要看官方文档!

二. 新手时期

当我还是新手的时候,我其实也常常苦恼于入门——教程看了好多遍,跟着教程敲了一遍又一遍,感觉还是只会基础,自己想写点什么却不会。

后来,当我入门一段时间后,我返回去想一想,才想明白一些技巧。

所以,以我的经历,总结如下步骤:

1. 仅学基础

一开始的时候,我也是不停地啃教程,不管是文档还是视频,但是发现我还是只会基础理论知识,那些高级特性案例都敲了,却并不明白什么意思。

后来,我就发现,对于我而言,并不需要学太多,只要学会基础即可,甚至基础也不用太深入。

2. 自己构思写一个项目

跟着教程敲代码,效果甚微。

要自己构思一个项目,比如写一个TODO,写一个命令行聊天工具,写一个博客等等简单的程序。最好是自己感兴趣的领域。

但是,需要注意的是,一定要自己去构思如何写:

  • 你准备写一个什么程序?要达到什么效果?
  • 写这个程序有哪些功能?
  • 这些功能都应该怎么实现?

然后,直接开始写代码!哪怕只是创建了几个文件。

只有自己思考的,才能深刻理解和记忆。

3. 不会就去学,不懂就复制过来用

当然,因为仅仅学了基础,你会发现很多功能并不会,甚至比如如何读取一个文件都不会。

如果这时候,遇到不会的,就当场去学,哪怕是高级特性,学到把不会的这个点能做出来为止。

如果一个功能不懂什么意思,搞不明白,那么直接复制过来,调试到能满足功能为止,然后将这段代码和这个场景记住。

4. 多写代码,迈过门槛

我一直觉得写代码有一个门槛,在迈过门槛前,学习会非常困难,但是,一旦迈过这个门槛,你就会发现,学起来异常轻松,你所学的技术可以(相对)融会贯通。

那么迈过这个门槛的方法就是:重复2和3两个步骤,多写代码,多思考。

是的,不断重复,然后可能某一天,当你对你学的技术恍然大悟的时候,那么其实就是迈过了那个门槛。

然后,之后便是更深入地学习了。

三. 总结

一路走来,我觉得最重要的是“多写代码,多思考”。不少代码写到最后甚至都是肌肉记忆了,但是代码还是会变的,自己思考的方式和过程,自己沉淀的知识才是最宝贵的,足以支撑我能够不断学习新的技术,适应新的模式。

Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy