如何快速学习一门新编程语言

Attson Lv3

概述

笔者目前工作已有6个年头,接触过PHP、golang、java/kotlin、js/ts、.net等,对这几个语言都有一些项目开发经验,最早是在php上扎根。本文谈谈自己对新语言学习方向的一些看法。

学习方向

语法

大多数语言的语法结构和思想,基本是和c语言相似的,包含变量声明,类型定义,结构体/类,定义,分支条件,循环结构等。所以当你熟悉一门语言之后,再去看其他语言的代码,基本都是能看懂的。千万不要有固有思想,认为我只会php,去看js就一点都看不下去,这种心理上的矛盾,会让你在学习新语言的路上难度提升。

当然每个语言有一定特有的语法糖,比如 go 的 defer,kotlin 的各种魔法函数,这些其实不是特别重要,前期只要知道有这么个东西和它的作用就可以了。

常用的包

每个语言都有自己的内置函数和标准库,在项目中常用的有字符串处理,数组处理,集合处理,日志库,序列化库,配置管理,文件读写,类型转换,熟悉这些基本库,对上手开发是比较有帮助的,毕竟真实项目很难离开这些。

进阶的库可以有所了解,比如网络io处理,反射,信号处理等,这些基本会在较为底层的开发领域会遇到,基本了解即可

开发框架

一个复杂的项目,很难离开开发框架,使用这些框架,能够帮助我们快速搭建一个规范成熟的项目。通过常用框架去入门和熟悉一门语言,也是一个好的方式。
比如java的spring系列,php的laravel系列,js的vue/react系列。当然前端还分为ui框架,目前国内常用的elementui,在web项目里面就比较常见。

在公司开发项目,基本都会选择一个合适的框架,提升开发效率和方便技术管理。

中间件

一个项目通常都会与其他组件一起协作,不同语言与组件的交互,会有不同的客户端程序,比如mysql在java中的jdbc,mybatis,在php中的pdo,laravel-orm,都是一个常规项目所需要和选择的。
一般的后端项目会涉及如mysql、redis、mongodb、rabbitmq等,后端大多数都是与数据进行交互,所以数据相关的中间件需要熟悉。

包管理器

成熟的项目同样离不开包管理器。在项目实际开发中,会运用到大量的第三方库,通过使用这些第三方优质的库,能够大大减少我们的开发时间,所以如何去导入和版本控制,
是每个项目都需要考虑的。比如php中使用composer管理,java中有grade/maven,js中有npm、yarn、pnpm。不同的管理器,会有不同的优化点,这个也是需要去了解如何使用的。

构建部署

目前构建打包基本都是和包管理器绑定的,通过包管理器命令,就可以将可运行的项目包构建出来,当然像php这样的脚本语言,代码文件本身就可以直接运行,也没有打包这层概念。
不同的语言的部署方式会有较大的差异,比如前端项目通常部署在oss文件服务中,后端项目可以部署在主机上,也可以使用容器化技术部署,还需要考虑机器资源,参数调优等问题。

进阶

完成上述方向学习后,进阶方向还可以熟悉该语言的编译运行,线程模型,内存模型,设计思想等,加强对该语言的理解。

总结

在已经有编程语言的基础上去学习一门新语言,通常是比较容易的,最难的我认为还是摆脱个人的偏见,比如php是世界上最好的语言。
当思想固化之后,就很难接受新的东西了,每个语言都有它的优缺点,请勿将自己牢牢定位在xxx语言工程师,路不要走窄了~

谈谈对多语言开发者的想法

最后在谈谈对多语言开发者的想法,从个人的应聘和面试经验来看,面试官还是倾向于应聘者只在一门语言上精通。一个有php一年+java一年的经验,另一个有java两年的经验,在java工程师面试上,
毋庸置疑的是后者更占优势。至少在当前工作环境下,公司对语言开发岗位的定位通常是比较明确的。

从个人对技术理解的方向来看,程序员的价值应该在设计模式,领域建模,网络通信等通用的技能。语言只是个工具,熟悉多门语言的设计思想,是能够让开发者跳出基础开发的瓶颈的。所以在有机会的情况下,
学习多门语言总不是一件坏事情,当然为了保住当前的饭碗,请不要放弃在主语言上持续学习。

  • 标题: 如何快速学习一门新编程语言
  • 作者: Attson
  • 创建于 : 2023-10-16 22:12:15
  • 更新于 : 2023-10-18 16:13:23
  • 链接: https://attson.github.io/p/how-to-learn-a-new-program-language.html
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
 评论