学习一门新的编程语言的方法和原则

Table of Contents

近期由于一些科研需求,需要学习一些新的编程语言。为提升效率,优化学习的效果,笔者对如何学习新的编程语言进行了思考,并在本文记录之。

目前来看,学习一门新语言的方法论主要包括以下几点:

  1. 必须同已学会的编程语言进行对比
  2. 必须同使用该语言的目标所切合
  3. 必须专门学习该语言的特色之处。

以上述三点为指导,那么一门编程语言的学习大概应当是如下的流程:

  1. 首先,需要先有一门已经学会的编程语言,比如python。然后我们有一个目标语言,比如Rust
  2. 之后,我们要分析为什么要学习Rust,比如我的需求是要完成一篇和密码学相关的工作,该工作的源码使用了Rust。因此,我学习rust的主要目标是使用该密码学的源码并修改。
  3. 再之后,要开始进行移植。也就是说,通过总结写python代码中常用的一些东西,然后去rust里寻找对应的目标东西。比如python里有 List 类型,很常用,那么就应该找Rust里对应的,发现是 Vec 。于是对应的method,比如 append 便是对应的 push ,等等等等。
  4. 再之后,便是对一些明显的差异化的东西的学习。比如Rust和Python之间有静态语言和脚本语言之间的区别等等。这之后,还需要涉及到一些语言的特色,如Rust为安全性所进行的各种显式声明设计等等。
  5. 最后,便是不断地通过选择对比各类已知语言来完成学习,最终达成在目标源码中使用的目的。

1. Python中常用编程知识的移植清单

1.1. 基本控制流(15 min)

  1. 函数
    1. 如何定义
    2. 是否支持函数重载
    3. 为参数设置default value
  2. 类与方法
    1. 关键词:类内调用变量,类内调用方法
  3. 错误处理
  4. 条件,循环

1.2. 基本数据结构(15 min)

  1. List, 变长列表(向量)
    1. 迭代
      1. for i,x in enumerate(ls)
      2. for x in ls
      3. for i in range(N)
    2. 一些切片操作
      1. ls[-1]
      2. ls[:3]
    3. 添加删除
      1. ls.append()
  2. Dict,字典
    1. 插入元素
      1. adict[x]=y
    2. 查询
      1. y=adict[x]
    3. 遍历
      1. [(a,b) for a,b in adict.items()]

1.3. 基本操作 (20 min)

  • 文件处理
    • 文本文件读取与存储
    • json
    • 存储常见的数据结构类型到文件

1.4. 基本函数库

  • 线性代数
    • 类似于numpy
  • GUI
    • 类似于flet

待补充。


Author: Zi Liang (liangzid@stu.xjtu.edu.cn) Create Date: Fri Jan 20 08:41:15 2023 Last modified: 2024-03-09 Sat 20:56 Creator: Emacs 28.1 (Org mode 9.5.2)