Skip to content

Latest commit

 

History

History
108 lines (52 loc) · 3.11 KB

File metadata and controls

108 lines (52 loc) · 3.11 KB

收获总结

极大丰富对编程中通用思想和核心思想的了解和理解,学习新编程语言能快速上手

得益于课程完备的资源和精巧的递进式设计(tutor 可视化 frame,unblocker保证理解题意,autograder 自动测试与评分)提升编程成就感和收获感,从而极大增加对编程的热情和兴趣

关于学习生活的思考:做自己喜欢和擅长的,探索多重职业,不要比较

函数构建抽象

代码如何被解释器执行

命名绑定与变量赋值

表达式,call expression,special form,evaluate,operator 和 operands

函数调用栈帧 frame 和 env

流程控制,迭代,for,range(len()),enumrate

一等公民,高阶函数,作为参数返回值

函数嵌套,闭包

装饰器

匿名函数 lambda

递归信仰之跃(Recursive Leap of Faith),类似数学归纳法

数据构建抽象

数据结构:序列,数组、字符串、链表、树

前置记录,双指针思路,累计记录

Py数据结构:数字,字符串"",列表 list[],元组 tuple(),字典 dict{} ,集合 set{},range,列表生成式,zip()

树递归,常用于选择问题,选择和不选,划分问题,树路径等

互递归,两个递归互相调用

递归作为迭代对象,递归构造自顶向下或自下向上

记录递归规程,动态规划思想,空间换时间

数据可变性:可变与不可变

字典分发,dispatch

数据生命周期与作用域 nolocal

迭代器,生成器,惰性生成,next,yield,流Streams

map,reduce

OOP,封装继承,抽象,抽象屏障隔离,消息传递,用函数实现类

Py 的 str 和 repr

泛型

异常

复杂度,函数嵌套增加变量,记忆化记录信息,比如递归次数,执行时间,复杂度增长类别

程序的执行解释

Scheme,全是 Linked List

函数式编程,pure 纯函数,non-side-effect 无副作用,currying 柯里化

编译原理,BNF 范式,AST 抽象语法树,词法分析器,语法分析器

解释器 REPL,程序即数据,数据即程序

递归爆栈,Tail call 尾递归调用,尾递归优化为迭代

Dynamic Scope 动态作用域、Macros 宏编程、Streams 流

数据处理

声明式编程 SQL,select,join表连接左右全,分组group,聚合aggregation,过滤having,执行顺序

分布式计算,cs,ip,tcp,http,p2p

分布式数据处理,map,reduce,本地实现,Hadoop

并行计算,单核性能到堆核心数

进程,多进程通常不共享数据因此需要通信来共享状态,多核心进程可真并发,单核心心跳切换进程

线程,多线程共享数据,同时读写,会产生逻辑问题

多线程不共享数据,无需同步,比如:只读数据永远不会冲突。由于解释器或编译器的优化,无法保证真正按照代码写的顺序执行,没有数据依赖的代码,可能下面代码在上面执行

同步数据结构,

锁,有的数据结构不提供同步版本,需要自行控制锁,with 确保异常时也能释放锁

屏障,避免数据共享,将程序分为多个阶段

消息传递,