如何学习新的编程语言或软件工具
入门阶段
-
改变对社交媒体、视频应用的使用方式,包括 Youtube 、B 站、小红书,从漫无目的地浏览与被动接受系统推荐转为把它们当作搜索引擎来使用。根据我们的学习主题与具体问题,将搜索到的优秀资源放入“稍后观看”,浏览以快速入门。毕竟,这些资源比阅读说明手册要更为形象。
从中应获得初步的认识与理解。这包括编程语言、软件工具的基本用法、原理、工作机制。 有这么一个基本的认知是非常重要的。我自己以前存在问题就是只知道工具的几个常见用法,但对于工作制不清楚或者比较模糊,例如, Git 的 merge 、 rebase 、 cherry-pick 的区别。
- 让 AI 总结用法、原理、机制。 AI 作为一个新的知识的获取渠道,也是不能忽略的。
- 阅读手册的 tutorial 、 introduction 以及基础部分。以编程语言为例,这里所说的基础部分包括:
- 基本数据类型及其转换
- 运算符
- 变量的作用域
- 函数的定义
- 逻辑控制结构
- 语言的特性
- Julia: 参数的传递方式为绑定内存,不同维度的数据混合计算时采用的广播机制等。
- C++: 面向对象、泛型编程、现代语法。
- 常用功能函数
- 自己动手配置、使用。
积累与提高阶段
积累与提高是一个持续迭代的过程。 根据我们的研究与项目需要 ,系统阅读手册的相关章节,例如 Org mode 、 Emacs lisp 的文档。然后将其用于我们的开发工作中,要么解决实际问题,要么改进已有的工作流。总之,要在项目实践中学。我自己以前就存在这样的问题:没有明确的项目需求,把手册当成了教科书按部就班地来读。最终前学后忘,没有动手实践,学习效果很差。
输出阶段
当我们有了心得体会、技术积累,就可以 授人以渔 ,将自己的经验、思想、方法整理为博客文章,或者将各种功能函数打包发布。这也是对我们日积月累的成果的汇总、整理。相比之下, 授人以渔 倒未见得真得能对他人有多少实质性的帮助与启发,更多地是督促自己勤于整理、总结与反思。