计算思维到底是什么?和编程是不是一回事?一个在小学编程社团混了两年的人写点不成熟的

🔑 关键词:计算思维,周以真,编程教育,抽象能力,算法偏见

📖 摘要:计算思维被讲烂了,但多数人引用周以真那篇三页的原文时都漏掉了半句话。这篇是我在小学编程社团当了两年志愿教练之后的一些零碎记录,聊四大支柱的出处、我教砸了的那些课,以及为什么我觉得计算思维真正难的是知道什么东西不该交给机器算。

去年暑假我帮楼下邻居家小孩看 Scratch 作业,一个「猫抓老鼠」的小游戏,八岁的孩子卡在猫的移动上。我本来想讲「先想清楚步骤再动手」,结果说了两句自己先卡住了——真正卡住他的不是步骤,是他脑子里压根没有「坐标」这回事,他只知道猫在屏幕上,不知道猫有 x 和 y。那天回家路上我一直在想,大家天天挂在嘴上的计算思维,到底思维的是个啥。

图片

先把那篇三页的原文说清楚

2006 年 3 月,当时还在卡内基梅隆任教的周以真(Jeannette Wing)在《Communications of the ACM》上发了篇文章,标题就叫 Computational Thinking,正文只有三页。我在学校图书馆数据库里下 PDF 的时候愣了一下,三页,比我本科某门课的大作业说明还短。她的说法大概是:计算思维是调用计算机科学的基本概念去解决问题、设计系统和理解人类行为。注意最后半句,我后来翻各种二手材料,发现引用的人经常把「理解人类行为」这截吃掉,只留前两个,这个删减挺要命的,因为一删,计算思维就变成纯粹的技术动作了。

两年后她又写了一篇 Computational Thinking and Thinking about Computing,发在《Philosophical Transactions of the Royal Society A》上,语气比前一篇软了一大截,中间她大概是被同行说过。到 2016 年前后,CMU 的 Alfred Aho 那批人开始公开唱反调,核心意思是:计算思维和算法思维没本质差别,新瓶装旧酒。那些争论我啃过一部分,同意一半,另一半留着后面说。

图片

「四大支柱」这个说法,其实不是她提的

现在中文互联网上到处能搜到「计算思维的四个支柱:分解、模式识别、抽象、算法」,很多文章直接把它安在周以真头上。我为了给社团做课件,认真追过一次源头,追到的其实是英国那边,BBC Bitesize 的教材页和 Computing at School 这个教师组织,2010 年代中前期英国课改的时候铺开的。周以真原文里确实反复讲 abstraction,也提 decomposition,但她没列过一个整齐的四格表。

我拿这个跟我一个在英国读博的朋友聊过,他说他们那边中学老师人手一份四大支柱的讲义,孩子能背下来,但问「为什么抽象能省钱」就答不上来了。这事我信,因为我带社团的时候也这样,孩子能把四个词背得溜溜的,动手的时候该乱还是乱。词汇表背得再熟,跟脑子里的操作不是一回事。

我自己教「分解」教砸了

图片

社团是每周三下午,四五年级,一共十一个孩子,用 Scratch 3.0 在线版加学校那批老掉牙的联想一体机,开机要两分半。我头一个学期讲分解,讲得自我感觉良好,第二学期就被打脸了。

我让他们做一个打地鼠,要求先写「步骤清单」再动手。大部分人清单写得像模像样,一到屏幕上就崩。我一个个看过去才明白,他们把问题拆碎了,但不知道怎么拼回去,也不知道哪两块之间要传数据。有个女孩问我:老师,分数和音效谁先谁后?我说这个你自己定。她盯着屏幕看了三分钟,然后哭了。那天下课我在办公室坐到六点,一直在想我到底教了什么。

后来我改了教法,不再让他们写清单,改成先让他们口述,我在白板上画他们说的话,画得乱糟糟的,箭头飞来飞去。奇怪的是这样反而快了。我想了很久,大概是「分解」这个词本身有误导性,听起来像切西瓜,切完还是西瓜;但真的动手时,切完之后每个块都得有清楚的接口,那个接口才是难的,清单上体现不出来。

图片

我觉得真正稀缺的不是分解,是知道边界

下面这段是我的私货,可能不对,先摆出来。

大部分计算思维的教材都在教正向能力:怎么把一个任务拆开、怎么找重复规律、怎么抽象掉不相关的细节、怎么把它写成算法。这四件事当然都要会,但它们不稀有,写三个月 Python 基本都能摸出门道。真正稀有的是反向判断:什么东西不该被计算化。

图片

计算机这东西有个特性,它几乎免费地扩大规模。所以你只要把一个有问题的规则写成代码,错误就被等比例放大。2018 年 10 月,路透社报过亚马逊内部那套 AI 招聘筛选工具,训练数据是过去十年的简历,男性居多,最后模型学到的是「简历里出现女子学院的名字就减分」,公司后来把它关了。这套东西在纸上写出来只是一个偏见句子,跑起来就影响几十万份简历。荷兰那件事更狠,税务局用算法判定儿童福利金欺诈,误伤了几万个家庭,2021 年 1 月内阁集体辞职。这些例子里写代码的人未必是坏人,他们只是没在动手前问一句「这事该不该交给机器判」。

所以我现在跟孩子讲计算思维,会特意加一句跑题的话:机器算得快不等于算得对,也不等于算得该。他们听不太懂,但每次都有人点头。

顺带说个更土的例子

不聊小孩了,说个大人每天都在干的事。两张表匹配,一张八千行一张两万行,用 Excel 的 VLOOKUP,老版本机器能卡到你以为死机,风扇转得像直升机。换成 Power Query 里的合并查询,或者扔进 pandas 写一句 merge,几秒钟的事。这中间差的是什么?不是手速,是你脑子里知道「逐行找」和「先建索引再找」是两回事。我见过做行政的姐姐因为这个熬夜到十二点,也见过有人写了十分钟就收工,两个人 Excel 熟练度差不多。

图片

英国那场课改里有个数字我一直记得

2014 年 9 月,英国把 ICT 从国家课程里拿掉,换成 Computing,从五岁就开始必修。当时媒体吹得挺厉害。后来我印象里看过一份报考统计,GCSE 阶段选 Computing 的女生大概只占两成上下,而之前 ICT 的女生比例高得多。数字我记不精确了,别拿这个当引用依据。但这个落差方向应该是真的。

我对这件事的感觉挺复杂。把计算思维塞进全民必修,出发点没问题,可一旦变成考试科目,教的东西就会往可测量的方向塌缩,最后塌缩成一套背了能拿分的词汇表,四大支柱就属于这类。至于它到底有没有在八岁小孩脑子里种下点什么,说实话,我在社团待了两年,也说不清。下周三还得去,那个哭过的女孩现在做打地鼠做得挺好,就这一件事,我觉得够了。

🏷️ 标签: