午夜咖啡午夜咖啡

jolestar 的文章与笔记。

Post

木木问:最后那个程序是怎么写出来的

2022-02-20 14:48:03Post

从孩子追问“最后那个程序是谁写的”开始,回到编程世界最基本的问题。

有天晚上哄孩子睡觉,他突然问了我一个很好的问题:爸爸,你说我写的 Scratch 程序后面,还有一个真正的程序在运行它。那那个程序后面,是不是也还有一个程序?如果一直这样往后推,最后那个程序是谁写出来的?

我当时听到这个问题,第一反应其实是惊讶。因为这说明,只要孩子真的对编程产生好奇心,他很自然就会开始往计算机原理的底层追问,而不需要别人刻意灌输。

这个问题之所以有意思,是因为它抓住了软件世界里一个很基础也很本质的结构:我们平时总是在更高层的抽象里写代码,但每一层抽象后面,都依赖另一层系统来解释和执行。Scratch 后面有运行时,运行时后面有语言实现,语言实现后面有操作系统,操作系统后面还有硬件和更底层的控制逻辑。

对小朋友来说,这种“最后那个程序是谁写的”的追问,其实就是一种非常自然的递归式思维。它不是为了得到一个标准答案,而是在逼近“系统是怎么一层一层搭起来的”这个更底层的问题。

我也因此更确定一件事:编程教育里最重要的,不只是教孩子会不会写某一种语言,而是能不能保住这种追问系统边界的好奇心。因为一旦这种好奇心在,后面的语言、工具和平台都只是不同阶段的外壳而已。