上周带娃画分形树,我顺手用 LOGO 和 Python 各写了一遍。
同样的递归逻辑,同样的视觉效果。
LOGO 用了 10 行。Python 用了 20 行。
差别在哪?不是语言好坏,是“认知负荷”的分配方式完全不同。
画分形树这件事
分形树是编程启蒙里一个经典的“第一次递归”项目。
一根树干 → 两根树枝 → 四根树枝 → 八根……每一层都在重复“画一段、转个角、再画一段”。
孩子一眼就能看懂:原来树是这么长出来的。
但看懂是一回事,自己写出来是另一回事。
🔬 10行 vs 20行,差在哪
先看两段代码。
LOGO 版(10行):
TO TREE :LENGTH :DEPTH IF :DEPTH = 0 [STOP] FD :LENGTH LT 30 TREE :LENGTH * 0.7 :DEPTH - 1 RT 60 TREE :LENGTH * 0.7 :DEPTH - 1 LT 30 BK :LENGTHENDTREE 100 5
Python Turtle 版(20行):
import turtlet = turtle.Turtle()t.left(90)t.speed(0)deftree(length, depth):if depth == 0:return t.forward(length) t.left(30) tree(length * 0.7, depth - 1) t.right(60) tree(length * 0.7, depth - 1) t.left(30) t.backward(length)tree(100, 5)turtle.done()
说实话,核心逻辑一模一样。
多出来的 10 行全在“非核心”上:import、创建对象、设置速度、调整方向、调用 done()。
这些东西跟“分形树怎么画”一点关系都没有。
认知负荷去哪了
编程教育里有个概念叫认知负荷理论。
简单说:人的工作记忆容量有限,一次只能处理 3-5 个信息块。
如果孩子的大脑带宽被 import turtle、t = turtle.Turtle()、t.left(90) 这些东西占满了,哪还有余力理解递归?
LOGO 的厉害之处在于:它把认知带宽全部留给了“思维本身”。
FD 100 就是前进 100,LT 30 就是左转 30 度。没有对象、没有方法、没有 import。
孩子脑子里只装一件事:海龟怎么走。
不是 Python 不好,是启蒙阶段的孩子不应该跟语法细节抢带宽。
🏗️ 还有一个被忽略的差别
Python Turtle 画完图,窗口一闪就没了。
孩子刚看到自己画的分形树,还没来得及喊“妈妈你看”,画面消失了。
LOGO 不一样。画完就在那,不动。你可以盯着看、截图、发朋友圈、跟爷爷奶奶炫耀。
这个细节太小了,但对孩子的成就感来说是天壤之别。
我自己带孩子试过两种方式。用 Python 画完他问“去哪了”,用 LOGO 画完他跑去拉妈妈来看。同一个分形树,两种完全不同的反应。
不是二选一,是先后顺序
我的建议很简单:
启蒙用 LOGO,进阶用 Python。
这不是“哪个更好”的问题,是“哪个更适合当前阶段”的问题。
就好比你不会让刚学会走路的孩子去跑马拉松——不是马拉松不好,是时机不对。
🛠️ 试试这3个分形项目
如果孩子已经会画正方形和五角星,这三个分形项目可以试试:
1. 分形树(递归入门)
上面那段 LOGO 代码,改 :DEPTH 的值看效果。3 层是一棵小树苗,7 层是一棵茂密大树。
2. 科赫雪花(递归进阶)
把一条线段中间三分之一“拱起来”,然后对每一条小线段重复这个操作。
TO KOCH :LENGTH :DEPTH IF :DEPTH = 0 [FD :LENGTH STOP] KOCH :LENGTH / 3 :DEPTH - 1 LT 60 KOCH :LENGTH / 3 :DEPTH - 1 RT 120 KOCH :LENGTH / 3 :DEPTH - 1 LT 60 KOCH :LENGTH / 3 :DEPTH - 1END
画三次(每次转 120 度)就是一朵科赫雪花。
3. 谢尔宾斯基三角形(递归高阶)
画一个三角形,然后在里面画三个小三角形,然后在小三角形里再画……
三个项目难度递进,但核心都是同一个东西:递归。
孩子不需要理解递归的数学定义,他只需要理解“画小一号的自己”就够了。这就是 LOGO 的魔法。
写在最后
上周有个家长问我:孩子学 LOGO 半年了,什么时候转 Python?
我说:你急什么。
他画分形树的时候,脑子里在建模“自相似性”。他画科赫雪花的时候,在理解“无限细分”。这些东西在 Python 里也能学,但 LOGO 让他先“看见”了再“理解”。
编程启蒙最好的状态,不是“学会了一个语言”,而是“脑子里长出了一个模型”。
先让海龟帮孩子把模型建起来。语法的事,后面再说。