CS 基础课
上半年的学习任务是补一下编程中的两大核心基础:
- CS(计算机科学)
- DS(数据结构)
而近两三个星期主要是补 CS 基础,方法是通过伯克利大学的 CS61A 公开的视频、课件和相关资料对 CS 进行一个比较基础但又非常成体系的学习,期间学到的一些好东西也会尝试分享给同事,但一般无法得到共鸣,哈哈哈。
CS 基础学习主要涉及以下几个点:
- 最基础的抽象
- naming (binding variable name to value)
- function(binding variable name to procedure(s))
- 最基础的操作
- define
- set!
- lambda
- if
- 函数抽象
- 环境求值模型(极为关键的基础概念)
- 函数 ADT(作为抽象数据类型的函数)
- 高阶函数:closure, curry, compose(作为一等公民的函数)
- 递归函数(函数的桂冠,富含微妙)
- 线性递归
- 树形递归
- base case(s) 和 closer to base case(s)
- mutable functions(彻底打破常规)
- 数据抽象
- 类与实例的环境求值模型(面向对象语言中新增的环境求值模型元素:类)
- 元类、类与实例(类是元类的实例,类自己可以作为对象使用)
- 类 ADT(消息传递实现彼此通讯)
- 元语言抽象
- 在计算机科学中,新造一门语言是解决问题的终极武器(是最高级别的抽象)
- scheme 的极致优美:code is scheme list, code is data
- 解释器的处理机制:Read-Eval-Print Loop
- Reader
- Lexer
- Parser
- Evalor
- Eval
- Apply
- Reader
- 刷新认知的关键点:
- 环境求值模型
- define 和 set! 的缺一不可
- 递归之外无需迭代的「震撼」与「直觉」
- 对函数 ADT 的直觉
- 对类 ADT 的直觉
- 对 lambda 表达式的领悟
- 什么是 CS?
- 逻辑且抽象的具象心智过程表达
- 控制系统复杂性
- 分层抽象
- 编码范式
不知是该恭喜,还是该怎样,总之阅读到该文的,你是第 人。每一次刷新,都是不同的自己。