学习一门新的编程语言的方法和原则
Table of Contents
近期由于一些科研需求,需要学习一些新的编程语言。为提升效率,优化学习的效果,笔者对如何学习新的编程语言进行了思考,并在本文记录之。
目前来看,学习一门新语言的方法论主要包括以下几点:
- 必须同已学会的编程语言进行对比
- 必须同使用该语言的目标所切合
- 必须专门学习该语言的特色之处。
以上述三点为指导,那么一门编程语言的学习大概应当是如下的流程:
- 首先,需要先有一门已经学会的编程语言,比如python。然后我们有一个目标语言,比如Rust
- 之后,我们要分析为什么要学习Rust,比如我的需求是要完成一篇和密码学相关的工作,该工作的源码使用了Rust。因此,我学习rust的主要目标是使用该密码学的源码并修改。
- 再之后,要开始进行移植。也就是说,通过总结写python代码中常用的一些东西,然后去rust里寻找对应的目标东西。比如python里有
List
类型,很常用,那么就应该找Rust里对应的,发现是Vec
。于是对应的method,比如append
便是对应的push
,等等等等。 - 再之后,便是对一些明显的差异化的东西的学习。比如Rust和Python之间有静态语言和脚本语言之间的区别等等。这之后,还需要涉及到一些语言的特色,如Rust为安全性所进行的各种显式声明设计等等。
- 最后,便是不断地通过选择对比各类已知语言来完成学习,最终达成在目标源码中使用的目的。
1. Python中常用编程知识的移植清单
1.1. 基本控制流(15 min)
- 函数
- 如何定义
- 是否支持函数重载
- 为参数设置default value
- 类与方法
- 关键词:类内调用变量,类内调用方法
- 错误处理
- 条件,循环
1.2. 基本数据结构(15 min)
- List, 变长列表(向量)
- 迭代
for i,x in enumerate(ls)
for x in ls
for i in range(N)
- 一些切片操作
ls[-1]
ls[:3]
- 添加删除
ls.append()
- 迭代
- Dict,字典
- 插入元素
adict[x]=y
- 查询
y=adict[x]
- 遍历
[(a,b) for a,b in adict.items()]
- 插入元素
1.3. 基本操作 (20 min)
- 文件处理
- 文本文件读取与存储
- json
- 存储常见的数据结构类型到文件
1.4. 基本函数库
- 线性代数
- 类似于numpy
- GUI
- 类似于flet
待补充。