极大丰富对编程中通用思想和核心思想的了解和理解,学习新编程语言能快速上手
得益于课程完备的资源和精巧的递进式设计(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 确保异常时也能释放锁
屏障,避免数据共享,将程序分为多个阶段
消息传递,