小的时候不理解什么是 API,当时还上网查到了一大堆「什么是 API」的文章来看,但是基本无法理解,当时我还对「库程序员」和「业务程序员」的分类感到迷惑。

后来看编程书籍(想来可能是讲 C 语言的(好像常见语言中只有 C 语言要在后面接一个「语言」)),我也不是很清楚写出来的代码是要给谁用。那时候我也不清楚什么是「库」,而「框架」又和它有什么关系,为什么会有人买「中间件」。

直到后来接触了 JavaScript,真正开始写知识管理系统了,我才逐渐搞清楚这些概念,正所谓实践出真知,那些此前一直没能找到结合位点的模因终于能结合到「实践经历」上了。

从使用者的角度来思考

比起 A-Frame 用预测的使用概率(来自于库使用者的角度)来解释 API [1],Amethyst 使用了库开发者角度的解释方法 —— 这个函数来自于这个结构 [2]

a-frame:

the init handler is often used to:
 - Set up initial state and variables
 - Bind methods
 - Attach event listeners

amethyst.specs:

[−] fn setup(&mut self, res: &mut Resources)
  Sets up the Resources using Self::SystemData::setup.

例子的意义在于帮助学习者预测API用法

预测是人脑构建心智模型的重要动机,如果在教程中帮助学习者预测未来的使用场景,那么学习者就更容易把 API 加入到自己的编程模型中。

我觉得要让程序员快速入门,关键是提供一堆可以抄的代码,并教大家怎么抄,比如 a-frame 的教程问答就不错,每个API都给了用例,还有说明这个API常用于哪几种场景

例子的意义在于方便学习者复读

复读是最容易达到心流的方式之一,因为它的结果虽然对于学习者来说是未知的,但是教程使这些代码片段的运行结果是可预期的,而选择正确的上下文来复读(把代码片段黏贴到合适的位置)又是一门艺术,所以在复读操作中,难度和技巧得以平衡,保持了学习的流畅性。