3-斩露锋芒
啊……
昨天的思考让我彻夜难眠。
我揉着睡眼惺忪的眼睛从床上爬起,打开手机一看。
8! 点! 半! 了!!
我意识到八点钟我有一个编程集训班,我急促地抓起一片面包就跑。
阳光透过机房的老旧窗帘,在布满灰尘的显示器上投下斑驳的光影。空气里弥漫着旧书本混合的特殊气味。我坐在最后一排。
好说歹说也只罚站了半小时,下次还是定个闹钟吧……
这是我重生后第一次正式的集训,心情莫名地有些期待,又有些忐忑。
课程安排在上午第一节,不少同学还带着早起后的惺忪,打着哈陆续走进机房。我的同桌一屁股坐在旁边的椅子上,爆了一句粗口, 嘟囔着:“,每天都起这么早,又是编程课,上次那个让小猫移动的作业我做了好久才搞定。哎……”
前座的李明也转过头来,一脸苦恼:“我也是,我妈还说现在编程很重要,非要我参加什么编程集训班,结果教的都是这种拖积木的游戏,无聊死了。我连CSP-J都没过呢”
我笑了笑,没有接话。在这个世界里,似乎所有人都认为编程就是Scratch那样的图形化拖拽,连家长们都接受了这种认知。
上课铃响,编程老师王老师快步走进教室。他是个三十多岁的男老师,头发梳得一丝不苟,戴着一副黑框眼镜,总是穿着熨得笔挺的白衬衫,看起来严谨而认真。
“同学们,打开电脑,登录Scratch平台。”声音清晰而有力,“今天我们要学习一个非常重要的概念——循环结构。”
教室里响起一阵窸窸窣窣的操作声。我熟练地输入网址,看着那个熟悉的蓝色界面加载完成。
“搭建舞台,创建积木……”
在我原来的世界,这不过是小学生入门编程的玩具,但在这里,却是高中信息技术课的正经内容。
王老师在教师机上投屏演示:“看好了,如果我们想让小猫向前移动100步,最简单的方法是什么?”
有同学回答:“拖10个移动10步的积木!”
“没错。”王老师点点头,“但是这样太麻烦了。今天,我要教大家一个更高效的方法——重复执行积木。”
他晃了晃鼠标,指向:
他拖动着“重复执行10次”积木,郑重其事地将其套在了一个“移动10步”积木外面。“看,这样只需要两个积木,就能实现同样的效果!这就是编程的魅力!”
台下响起一阵惊叹。我听见李明小声说:“哇,原来可以这样!那我上次做那个让小猫画正方形的作业,就不用拖那么多重复的积木了!”
王老师很满意大家的反应,继续讲解:“我们还可以在里面加入声音和特效。”他又拖入一个
积木,“这样每次移动都会发出喵喵声。”
当点击运行,小猫一边移动一边发出喵喵声时,教室里再次响起一片赞叹。不少同学已经迫不及待地开始尝试这个 “神奇” 的功能。
王老师走下讲台巡视,不时指导:
“不对,这个积木应该放在里面。”
“重复次数要设置成10,不是1。”
当他走到我这一排时,我的屏幕引起了他的注意。不同于其他同学只做了基础的移动,我的小猫已经在屏幕上完成了一套复杂的动作:移动时自动避开边缘,每次移动后随机变换颜色,还在角落里显示着移动次数的计数。
“同学,你在做什么?”王老师的眉头微微皱起,“我们要求的是用重复执行积木实现基本功能,不要好高骛远。”
他指着我的屏幕:“这些额外的功能会分散你对基础知识的掌握。编程要循序渐进,先把最简单的掌握好。”
我点点头,但没有立即删除那些代码。反而指着屏幕上的一个变量问:“老师,我只是想试试看能不能记录移动次数,这个计数器好像不太准确...”
王老师俯身仔细看了看,表情有些困惑:“你这是用什么实现的?Scratch里有这种功能吗?”
我演示了一下如何创建变量和条件判断积木:“就是用这些基础积木组合的,我发现可以实时显示移动次数。”
周围几个同学也凑过来看,发出啧啧称奇的声音。王老师的表情从困惑变为惊讶:“这些组合方式...我从来没想过可以这样用。你是自己想到的?”
(内心OS:看来还是秀一波吧)
就在这时,教室的电脑突然出现了问题。王老师教师机上的投屏卡住了,无论怎么操作都没有反应。
“又来了,”王老师叹了口气,“这台老电脑经常出问题。算了,大家先自己练习吧,我去找电教老师来看看。”
趁着王老师离开的间隙,同学们开始自由操作。不少人对我屏幕上的特效产生了兴趣,围过来问是怎么做的。
我简单地演示了如何组合积木来实现一些进阶功能,同学们看得目瞪口呆。
“哇,你好厉害啊!这些方法老师都没教过!”
“这个变色效果怎么做的?能教教我吗?”
“还有那个自动避障的功能,太智能了吧!”
我被同学们的热情包围,不得不开始现场教学。
我清了清嗓子:“其实这些都不难,关键是理解编程思维。比如这个自动避障功能,本质上就是条件判断的应用...”
我开始深入浅出地讲解起来,不仅演示如何做,还解释为什么这么做。同学们听得聚精会神,连平时对编程最不感兴趣的几个女生也凑了过来。
“没想到编程还挺有意思的,”一个女生说,“以前总觉得就是拖积木,没想到还能做出这么智能的效果。”
正当我讲得兴起时,教室门被推开了。王老师不仅带回了电教老师,身后还跟着教务主任和几位看起来像是校外人士的参观者。
“这是我们学校的计算机教室,”教务主任正向参观者介绍,“我们非常重视信息技术教育,特别是编程思维的培养...”
他们的目光突然被围在我座位旁的人群吸引。
此时,我在教我们高级编程技巧,把小猫编辑成会自己避障,还会变色计数。
王老师的脸色顿时变得有些尴尬。教务主任和参观者们却表现出浓厚兴趣,走了过来。
“能演示一下吗?”王老师问道。
我点点头,重新运行程序。小猫在屏幕上灵活移动,自动避开边缘,颜色随着移动次数变化,计数器实时更新。
参观者们露出惊讶的表情:“这是高中生自己做出来的?用的还是Scratch?”
教务主任显得很得意:“是的,我们学校非常注重培养学生的创新能力。”(666怎么这么装)
这时,电教老师突然说:“投屏系统修好了,不如让这位同学给大家演示一下怎么做的?”
所有人的目光都聚焦在我身上。
我决定现场说教一番。
我站起身,走到教师机前。连接投屏后,我没有立即开始演示,而是先问了一个问题:“大家知道编程最重要的是什么吗?”
台下一片安静。
“不是记住多少个积木,也不是会拖多少功能。”我自问自答,“而是解决问题的能力,是将复杂问题拆解成简单步骤的思维能力。”(装逼ing)
我开始演示,但不仅仅是操作,而是边做边讲解背后的逻辑:
“自动避障的本质是什么?是条件判断。如果碰到边缘,就改变方向。”
“变色功能的本质是什么?是变量和运算。每次移动后改变颜色变量的值。”
“计数器的本质是什么?是变量的记录和显示。”
我不仅复现了之前的效果,还添加了更多功能:用广播消息实现多个角色之间的互动,用链表结构记录移动轨迹,甚至用自制积木封装了一些常用功能。
台下从最初的窃窃私语变得鸦雀无声,所有人的目光都聚焦在屏幕上。当我最后演示出一个完整的小游戏时,教室里响起了热烈的掌声。
王老师的表情从尴尬变为震惊,最后露出了欣慰的笑容。他走上前来,拍拍我的肩膀:“这些...这些思路你是从哪里学来的?”
我笑了笑:“就是平时自己琢磨的。我觉得编程不应该局限于拖积木,而应该学会思考背后的逻辑。”
教务主任显得格外高兴,对参观者们说:“这就是我们学校提倡的创新教育成果!”(666还给你装上了)
参观者们纷纷点头,其中一个看起来像是教育专家的人说:“这位同学展现的编程思维非常超前,很多大学生都未必能达到这个水平。”
?
(OS:这个世界的人这么逊的吗)
下课铃在这时响起,但没有人立即离开。同学们围上来,七嘴八舌地问着问题:
“那个自制积木怎么用的?”
“链表是什么?听起来好高级!”
“能教我做游戏吗?”
我耐心地一一解答,感受到一种前所未有的满足感。
王老师最后说:“wujinyu2012,下课后能来我办公室一下吗?我想和你聊聊。”
我点点头,知道这可能是另一个机会。
走在回教室的路上,李明激动地搂着我的肩膀:“太牛了!你今天简直神了!那些参观的人都看傻了!原来编程这么有意思,我以前怎么没发现呢……”
我看着他们兴奋的表情,心里涌起一股暖流。也许,我不能立即改变这个世界,但我可以从影响身边的人开始。
下午的余晖洒在走廊上,将我们的影子拉得很长。我知道,这只是个开始。
回到教室,我发现桌上多了一张纸条:“听说你要参加CSP-J的第二轮,可以带我去你的集训班看看吗”
夕阳的光辉洒在叶隙,落下一地碎金,打在那张纸条上。
我小心地收起纸条,嘴角不自觉地上扬。这个世界的信息学教育,或许需要一场革命。
而谁又说得好呢?