---
title: 木木问：最后那个程序是怎么写出来的
date: '2022-02-20 14:48:03'
draft: false
summary: 从孩子追问“最后那个程序是谁写的”开始，回到编程世界最基本的问题。
slug: scratch-and-the-last-program
syndication:
- platform: Weibo
  url: https://weibo.com/1648815335/4739081407302856
- platform: X / Twitter
  url: https://x.com/jolestar/status/1495409921189642245
tags:
- life
- programming
- education
topics:
- life
type: post
---

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

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

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

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

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