Skip to content

Coding

编码的思考

Different Stages

第一阶段

对语言的学习应用,掌握语言的基础用法

第二阶段

对语言生态的学习应用。

面对问题,从生态中寻求到解决方法,并不断尝试寻找环境下相对的最优方法

第三阶段

深入理解语言生态,从语言生态中总结出场景设计的对象或方法

第四阶段

深入理解语言,编程语言对于解决问题意义在于描述问题

结合语言的特性描述问题

从语言的特性(自身的特性、描述能力的特性)正向推导出生态的特性(应用的特性)

深入理解语言,同样包含着基于语言本身的性能优化

第五阶段

结合语言、结合语言的生态,构造自我可迭代的生态。

整个生态的构建在于,不断丰富底层,提升上层能力,同时不断优化丰富承上启下的过程

原则上 DogFooding

Reading Framework

阅读一个框架源码,最重要的一点是不能深究某一个细节,阅读源码框架,最终要的是 理解源码框架实现功能的过程

Framework 看成一个 Function ,去理解 FunctionInputOutput

拆分结构

overall structure 由多个 local structure 组成

  • overall structurelocal structure 的关系是递归存在的
  • 某个 local structure 也可是另外一个 overall structure

local structurelocal structure之前为了保证信息的使用,存在引用

  • 这里所说的 引用 包含了语言本身的特性(不局限于引用)
  • local structure 不一定是真正的代码的抽象,有时候也是为了解决某些问题而存在的一个过程、概念的抽象
    • 这种表现行为一般在面向对象中,不同的角度看待同一个对象,会获取所需的不同的信息
  • 因此在阅读源码的时候要 抓住关键的local structure的引用
  • 理解一个 关键的 local structure 可能会帮助理解整个从前到后的过程

拆分行为

尝试 猜想、验证、校正 + 质疑

  • 猜想 框架使用过程中对于使用对象的抽象
    • 面向对象语言中,大部分框架都会抽象使用过程中的对象
  • 猜想 overall structure 的 可能存在的各个 local structure 的组成部分
  • 猜想 local structurelocal structure 之间的关联与应用
  • 猜想 local structure 对于 Input,Output,Function的抽象
    • 为什么这么思考,因为高级编程语言是可自举的,所以高级编程语言实现的框架,如果抽象程度足够,也是可自举的
    • Input,Output,Function 一般对应的就是框架的实践

不要尝试完全理解某个框架,应当是去理解某个 local structure 解决的某个问题

一般意义上基于问题可以拆分的原则,整体问题的解决可以分割为多个小问题的解决

阅读思路

栈式: 为了实现overall structure,进而设计了某些 local structure

  1. step1: 猜想: overall structure 实现了什么,猜想组成 overall structurelocal structure
  2. step2: 验证:具体阅读 local structure 的实现内容
  3. step3: 校正:根据阅读内容的结果,校正 step1
  4. 顺序循环 step1,step2,step3, 中间穿插 质疑,一般质疑是否为最优解

链式: 一些 local structure 的先后以及关联 组成了 overall structure

  • 注重解决实际问题的顺序,思考为什么先,思考为什么后,思考为什么回调
  • 总结先、后、回调等,泛化框架设计思路