本课问题:什么操作能区分两种目前都说得通的解释?
前置:完成第一次保存与预测;无需编程语法。
本课交付:至少两种竞争假设,以及一组能区分它们的预测。预计 30–45 分钟。
看到保存提示时,我们很容易想到一个熟悉的词:“缓存”“数据库”“云端”。但一个名字不等于证据。
先画一张边界图:屏幕所在的页面,浏览器,提供请求响应的服务程序,以及程序可能使用的持久存储。现在它们只是可能参与的角色,不表示你已经确定数据在哪。
我们可以提出四个工作假设:
| 假设 | 暂时的解释 | 它依赖什么继续存在 |
|---|---|---|
| H1 | 文字只留在当前页面的运行状态 | 这个页面实例 |
| H2 | 浏览器把文字保存在自己的站点存储里 | 相应浏览器环境与存储数据 |
| H3 | 文字交给了服务程序,只存在服务的运行状态里 | 这个服务进程 |
| H4 | 服务把文字写进了重启后仍可读取的存储 | 对应存储介质与读取路径 |
这四种解释不是世界上全部可能性。例如,有的程序会定时同步,有的会在退出时写盘。先用它们形成一个能工作的初始模型,之后允许增加或修正。
假设某样本刷新后文字还在。H2、H3、H4 都可能解释这个结果,单次刷新区分不了它们。
换一个独立的浏览器环境,再打开完全相同的地址和实验编号:H2 预计新环境没有原浏览器的本地记录;H3/H4 预计若服务共享同一实验数据,新环境可能读到它。
“可能”里的条件不能省略。若系统需要登录,而你换浏览器后没有同一身份,读不到并不能证明数据只在原浏览器。这一组实验没有账号系统,但真实应用可能有。
问自己:如果两个假设都成立,我的实验是否会看到相同结果?如果会,这个实验可能确认了某个行为,却没有区分这两个解释。
例如,连续点两次保存,两个样本都出现两行文字,通常还不足以判断它们的保存位置。它可能告诉你重复操作如何处理,却不一定回答持久化问题。
好的问题要和合适的操作配对:生命周期问题用结束对应生命周期来检验,读取范围问题用改变读取环境来检验,响应可靠性问题再考虑故障。
先不查看源码,为同一样本填写下面四列:
| 准备改变的条件 | H1 的预测 | H2 的预测 | 哪个结果会让我改变看法 |
|---|---|---|---|
| 刷新当前页 | 自己填写 | 自己填写 | 自己填写 |
| 新标签页打开同一链接 | 自己填写 | 自己填写 | 自己填写 |
| 独立浏览器环境 | 自己填写 | 自己填写 | 自己填写 |
| 真实重启服务 | 自己填写 | 自己填写 | 自己填写 |
可以换成 H2/H3 或 H3/H4。选择其中最有辨别力的一行,登记到实验页面,不要求一口气执行全部操作。
可以给 AI 这段观察:“保存后刷新,文字仍然可见。”请它给出至少两种可能解释,并分别提出一个能区分它们的实验。
保留 AI 原文,然后检查:它是否把猜测说成事实?是否给了条件?提出的实验是否真的会产生不同预测?没有模型账号也能完成本课,使用上面的四个工作假设即可。
一个需要警惕的解释是:“刷新后还在,所以一定用了服务器数据库。”你已经能指出,它漏掉了浏览器本地存储等可能性。
交付两种能解释现象的假设、一个能区分它们的操作,以及实验前对不同结果的预测。再写一句:“如果出现……,我会放弃或修正目前的解释。”
目前还不知道假设是否正确。我们只是把模糊的好奇,变成了可以实施的调查。下一课控制条件,真正让这些解释接受观察。