Coding
Different Stages
第一阶段
对语言的学习应用,掌握语言的基础用法
第二阶段
对语言生态的学习应用。
面对问题,从生态中寻求到解决方法,并不断尝试寻找环境下相对的最优方法
第三阶段
深入理解语言生态,从语言生态中总结出场景设计的对象或方法
第四阶段
深入理解语言,编程语言对于解决问题意义在于描述问题
结合语言的特性描述问题
从语言的特性(自身的特性、描述能力的特性)正向推导出生态的特性(应用的特性)
深入理解语言,同样包含着基于语言本身的性能优化
第五阶段
结合语言、结合语言的生态,构造自我可迭代的生态。
整个生态的构建在于,不断丰富底层,提升上层能力,同时不断优化丰富承上启下的过程
原则上 DogFooding
Reading Framework
阅读一个框架源码,最重要的一点是不能深究某一个细节,阅读源码框架,最终要的是理解源码框架实现功能的过程。
把 Framework 看成一个 Function ,去理解 Function 的 Input 和 Output
拆分结构
overall structure 由多个 local structure 组成
overall structure和local structure的关系是递归存在的某个
local structure也可是另外一个overall structure
local structure和local structure之前为了保证信息的使用, 存在引用
这里所说的引用包含了语言本身的特性(不局限于引用)
local structure不一定是真正的代码的抽象,有时候也是为了解决某些问题而存在的一个过程、概念的抽象这种表现行为一般在面向对象中,不同的角度看待同一个对象,会获取所需的不同的信息
因此在阅读源码的时候要抓住关键的
local structure的引用理解一个 关键的
local structure可能会帮助理解整个从前到后的过程
拆分行为
尝试 猜想、验证、校正 + 质疑
猜想 框架使用过程中对于使用对象的抽象
面向对象语言中,大部分框架都会抽象使用过程中的对象
猜想
overall structure的 可能存在的各个local structure的组成部分猜想
local structure和local structure之间的关联与应用猜想
local structure对于Input,Output,Function的抽象为什么这么思考,因为高级编程语言是可自举的,所以高级编程语言实现的框架,如果抽象程度足够,也是可自举的
Input,Output,Function一般对应的就是框架的实践
不要尝试完全理解某个框架,应当是去理解某个 local structure 解决的某个问题
一般意义上基于问题可以拆分的原则,整体问题的解决可以分割为多个小问题的解决
阅读思路
栈式: 为了实现overall structure ,进而设计了某些 local structure
step1: 猜想:overall structure实现了什么,猜想组成overall structure的local structurestep2: 验证:具体阅读local structure的实现内容step3: 校正:根据阅读内容的结果,校正step1顺序循环
step1,step2,step3, 中间穿插质疑,一般质疑是否为最优解
链式: 一些 local structure 的先后以及关联 组成了 overall structure
注重解决实际问题的顺序,思考为什么先,思考为什么后,思考为什么回调
总结先、后、回调等,泛化框架设计思路