项目是李艳接洽的。一个关注视障儿童教育的公益组织“光明之声”,想要为孩子们开发一套编程启蒙工具。
“他们预算很少,基本是志愿性质。”李艳在周会上说,“但我认为值得做。不仅仅是公益,这对我们思考‘包容性设计’也有价值。”
刘星几乎没有犹豫:“我参加。”
不是出于同情——虽然他确实同情那些孩子——而是因为这件事触动了他内心深处某个地方。视障儿童,用听觉和触觉理解世界,现在要学习编程,一种本质上视觉化的活动。
这本身就是一种诗意的挑战:如何让不可见的东西变得可感知?
第一次会议在“光明之声”的培训中心举行。那是一个普通居民楼的一层,改造成适合视障儿童活动的空间。地面有不同材质的导引路径,墙上贴满了凸起的图案和盲文标识。
负责人王老师是个四十多岁的女性,声音温和清晰:“我们有些孩子对计算机很感兴趣,但现有的编程工具都是为明眼人设计的。图形化编程界面他们‘看’不到,纯文本编程又太抽象。”
刘星环顾四周。几个孩子正在老师的引导下使用电脑,电脑发出语音提示:“光标当前位置:开始菜单。”“双击打开文本编辑器。”
一个大约十岁的男孩双手放在键盘上,耳朵紧贴着耳机,脸上是专注到近乎虔诚的表情。
“他叫小宇,先天性全盲。”王老师轻声说,“但他对逻辑特别敏感,喜欢数学,喜欢解谜。他说他想‘创造游戏’,像其他孩子玩的那种。”
小宇似乎感觉到了谈话,转过头来。他的眼睛是睁开的,但没有焦点,像蒙着一层薄雾。“王老师,我的程序又报错了。”他说,声音平静,没有沮丧。
“什么错误?”王老师问。
“说第15行有语法错误。但我听了好几遍,没听出问题。”小宇的手在键盘上摸索着,“我想可能是少了一个括号。”
刘星走过去,蹲在小宇旁边:“我可以看看吗?”
小宇把耳机摘下一只递给刘星。刘星戴上,听到快速而清晰的语音:“第15行,for循环,变量i从0到10,缺少右括号,语法错误……”
标准的屏幕阅读器语音,没有任何情感,但小宇就是通过这个来“读”代码。
刘星看向屏幕。确实,一个简单的for循环少了个括号。他轻声说:“你说得对,少了个右括号。在倒数第二个位置加上就行了。”
小宇的手在键盘上摸索着,找到位置,敲下括号。然后他运行程序,这次没有错误,语音开始输出执行结果。
男孩脸上绽放出一个灿烂的笑容:“成功了!它在数数了!”
那一刻,刘星感到胸腔里有种东西被触动了。不是怜悯,是敬意。这个孩子用听觉在脑海中构建了整个程序的结构,他能“听”出逻辑,能“听”出错误。
“小宇,这是刘星叔叔,他会帮我们设计更适合你们的编程工具。”王老师说。
小宇“看”向刘星声音的方向——头微微偏着,耳朵向前倾:“真的吗?能让编程更容易点吗?现在的工具,有时候语音读得太快了,我记不住。”
“我们会努力。”刘星说。
接下来的两周,刘星沉浸在这个项目中。他查阅无障碍设计规范,研究视障程序员使用的工具,甚至尝试蒙上眼睛用电脑——那是一次深刻的挫败体验。仅仅十分钟,他就感到迷失和焦虑,无法确定光标位置,无法快速找到需要的菜单。
而小宇这样的孩子,每天都在这样的世界里生活、学习、甚至创造。
李艳也参与了项目,她负责设计交互流程。“我们不能只是把视觉界面转成语音,”她说,“要重新思考什么是编程的本质。编程是逻辑构建,是问题解决。视觉只是表达方式之一。”
他们决定开发一个极简的编程环境,基于积木式编程(block-based coding),但不是用鼠标拖拽图形块——那对视障用户不友好——而是用键盘导航和语音反馈。
核心设计原则:
1.**空间定位**:用声音的空间感来模拟视觉布局。左边是积木库,中间是工作区,右边是执行结果。不同的区域有不同的音效提示。
2.**层级导航**:像文件目录一样,可以上下左右导航“听到”不同层级的积木。
3.**实时反馈**:每组合一个逻辑结构,系统会用自然语言描述这个结构做了什么。
4.**错误发现**:不是只报“语法错误”,而是描述“哪里可能出了问题,为什么”。
刘星负责技术实现。他选择用Web技术,这样孩子们可以在任何有浏览器的设备上使用。他写代码时,脑海里总是浮现小宇专注的表情。
一天下午,他去中心测试第一个原型。小宇是第一个试用者。
“欢迎来到声音编程世界。”系统用温暖的男声说,“当前在积木库区域。向下导航:事件积木。向上导航:控制积木。向左进入工作区,向右听取帮助。”
小宇戴着耳机,手指放在方向键上。他向下移动,系统播报:“事件积木:当程序启动时,当按键按下时,当计时器到时……”
“选‘当程序启动时’。”小宇小声说,按确认键。积木被添加到工作区。
“现在在工作区,”系统说,“当前积木:当程序启动时。下方可连接动作积木。向右导航到动作积木库。”
小宇向右移动。“动作积木:播放声音,朗读文字,计算数学,条件判断……”
“我想做一个数数程序。”小宇说,“从1数到10。”
刘星在旁边观察。小宇需要组合:循环积木(从1到10)+朗读积木(朗读当前数字)。在视觉编程里,这是简单的拖拽。但在纯听觉界面里,他需要在脑海中构建整个结构。
二十分钟后,小宇完成了。他运行程序,系统开始朗读:“1, 2, 3……”直到10。
“成功了!”小宇拍手,“比之前快多了!我能‘看到’整个结构!”
“‘看到’?”刘星忍不住问。
小宇转过头:“嗯,我能……在脑子里看到。就像地图一样。积木库在上面,工作区在中间,执行结果在下面。每个积木有不同的‘声音颜色’——循环积木是蓝色的声音,动作积木是黄色的声音。”
声音颜色。刘星震撼了。这个全盲的孩子,用通感(synesthesia)的方式理解世界。他不是“看见”蓝色,而是“听见”蓝色——某种声音质感、音调、节奏让他联想到蓝色。
“你能教我怎么‘听’颜色吗?”刘星认真地问。
小宇想了想:“嗯……循环积木的声音比较圆,像球在地上滚。动作积木的声音比较方,像敲桌子。错误的声音是红色的,很尖,像火警。”
王老师走过来,微笑着说:“很多视障孩子都有类似的感知方式。他们的听觉和触觉比我们发达,能分辨我们注意不到的细微差别。”
测试结束后,小宇问刘星:“叔叔,你能用这个工具做出游戏吗?真正的那种游戏?”
“你想做什么样的游戏?”
“一个声音迷宫。”小宇说,“玩家闭上眼睛,只用声音找路。不同的方向有不同的声音提示,前面有墙和没墙的声音不一样,找到出口就赢了。”
刘星感到鸡皮疙瘩起来了。这个孩子不仅仅想学编程,他想用编程创造一种体验——一种只有闭上眼睛才能真正享受的体验。
“我们可以一起做。”刘星说。
接下来的周末,刘星和小宇开始了“声音迷宫”项目。不是大人教小孩,而是合作者。
小宇设计游戏逻辑:“玩家在迷宫中,向前走是脚步声,向左转是左耳朵声音变大,向右转是右耳朵声音变大。碰到墙是‘咚’的一声。出口是流水声,越来越近声音越大。”
刘星负责实现,但他经常需要小宇的反馈:“这样的脚步声真实吗?”“这种方向的提示清晰吗?”
在这个过程中,刘星学会了用耳朵“看”世界。
他蒙上眼睛,在小宇的指导下体验迷宫原型。第一次,他撞墙了三次,完全迷失方向。但小宇只是平静地说:“听左边,是不是有微弱的流水声?那是出口方向。”
刘星仔细听,确实,左耳机有轻微的流水声,右耳机没有。他向左转,声音变强了一点。
“继续走,注意脚步声的变化。地面材质变了,说明快到出口了。”
刘星走了一步,脚步声从“踏踏”变成了“沙沙”,像是从石板路走到了沙地。
五分钟后,他成功“走”出迷宫。摘下眼罩时,他有种奇异的成就感——不是解决了技术难题的成就感,而是用全新感官理解世界的成就感。
“好玩吗?”小宇问,脸上是期待的表情。
“太好玩了。”刘星由衷地说,“这是我玩过最特别的游戏。”
小宇笑了,那笑容明亮得让整个房间都温暖起来。
项目进展顺利,但刘星从孩子们那里得到的,远比他给予的多。
他发现视障儿童的思维方式有种独特的清晰度。因为没有视觉干扰,他们对逻辑、顺序、因果关系特别敏感。一个小女孩告诉他:“我脑子里有一棵树,树干是主要想法,树枝是细节,叶子是例子。”另一个男孩说:“编程就像做菜,要按顺序放材料,不能乱。”
这些比喻比任何编程教材都生动。
一个月后,工具的第一个正式版发布了。中心组织了工作坊,十几个视障孩子参加了。刘星和李艳都去了,但主要角色是孩子们——他们互相教学,分享自己创作的小程序。
有个女孩做了个“声音绘画”程序:按不同键会发出不同乐器的声音,连续按会形成旋律。她说:“这是我用声音画的画。”
有个男孩做了个数学题库:系统出题,他心算回答。错了会有鼓励的声音,对了会有庆祝的音效。他说:“这样学习不枯燥。”
小宇的声音迷宫最受欢迎。孩子们轮流体验,笑声不断。“左边!左边有墙!”“我听到流水声了,快到了!”
看着这一幕,刘星感到眼眶发热。他想起自己低谷时期,觉得生活毫无意义,觉得自己是个失败者。但现在,看着这些孩子用他参与创造的工具,探索、学习、创造,他感到一种深刻的满足。
这种满足不是成就感——成就感是“我做到了”的感觉。这种满足是连接感,是“我参与了一件有意义的事”的感觉。
活动结束后,王老师找到刘星和李艳:“谢谢你们。不仅仅是工具,你们给了孩子们一种可能性——他们也可以成为创造者,而不仅仅是使用者。”
回程车上,李艳沉默了很久,然后说:“我有点惭愧。”
“为什么?”
“我以前做公益,多少带点‘施舍’的心态。我来帮助你们。但今天我看到,这些孩子不需要我们的怜悯,他们需要的是工具和机会。而且,他们教给我的,比我给他们的多。”
刘星点头:“小宇教我‘听’颜色。那个做声音绘画的女孩教我,艺术可以不依赖视觉。他们不是‘残缺的明眼人’,他们是完整的人,只是用不同的方式感知世界。”
车窗外,城市夜景流淌而过。红绿灯,霓虹招牌,橱窗灯光——所有这些视觉信息,对视障孩子来说是不存在的。但他们有另一个世界:声音的纹理,触感的细微差别,空间的回声定位。
而编程,现在也成了他们探索那个世界的工具。
回到家,刘星没有立刻开灯。他在黑暗中站了一会儿,闭上眼睛,尝试像小宇那样“听”房间。
冰箱的嗡鸣,窗外远处车流的声音,暖气片水流的声音,自己的呼吸声。这些声音构成了这个空间的“地图”。
他摸索着走到书桌前,没有开灯,打开电脑。电脑启动音,键盘敲击声,风扇转动声——这些声音在黑暗中格外清晰。
他打开为视障儿童设计的编程工具,戴上耳机,闭上眼睛。
“欢迎来到声音编程世界……”系统的声音响起。
他开始用纯听觉编程。创建一个变量,赋值,循环,条件判断。每步都有清晰的语音反馈。十五分钟后,他写了一个简单的小程序:根据时间播放不同的环境音——早晨是鸟鸣,中午是市井声,晚上是虫鸣。
运行程序,声音流淌出来。
刘星睁开眼睛,在黑暗中微笑。
原来给予,真的可以成为力量的源泉。不是因为他“强大”所以给予,而是因为在给予的过程中,他接触到了人类精神的韧性、创造力和适应力。
那些孩子面对比他所经历的大得多的挑战——终身的视力障碍,社会的偏见,有限的资源。但他们没有放弃创造,没有停止探索。
相比之下,他的“破碎”算什么?婚姻失败,职业挫折,中年危机——这些都是暂时的、部分的困难。而视障孩子们面对的是永久的、全面的挑战。
但他们依然在笑,在学习,在创造。
这给了刘星一种新的视角:痛苦不是竞赛,不需要比较谁更惨。重要的是,在任何境遇下,人都可以找到创造和成长的方式。
破碎处可以重生。黑暗中可以创造光明。限制中可以找到自由。
他打开灯,在笔记本上写道:
“为视障儿童做编程工具项目。学到:
1.人类感知世界的方式如此多样。视觉只是其中之一。
2.限制可以激发创造力。因为不能用视觉,孩子们发展出了惊人的听觉和逻辑智能。
3.给予不是单向的。在帮助他人的过程中,我被帮助了——获得了新的视角,新的敬意,新的力量。
4.技术可以成为桥梁,连接不同的世界,扩大人类的可能性。
5.真正的包容性设计,不是为‘残障者’做特殊版本,而是从设计之初就考虑多样性。
6.小宇说他想‘创造游戏’。这个愿望如此普通,又如此珍贵。每个人都想创造,无论有什么限制。
我在教编程,但孩子们教我更多:关于适应力,关于创造力,关于用自己所有的资源构建一个丰富的世界。
也许这就是重生的真谛——不是变成‘完美’的人,而是学会用自己所有的‘限制’和‘破碎’,创造属于自己的完整。”
写完,刘星想起明天要开商业会议,讨论下个季度的盈利目标。那些数字、增长、市场份额,曾经让他焦虑的东西,现在感觉……不那么重要了。
不是说不重要,而是它们有了一个更大的背景:他做的所有事情,最终是为了创造价值——为用户,为员工,为股东,也为像小宇这样的孩子。
商业可以成为善的力量。技术可以成为连接的工具。
而他,可以成为一个桥梁建造者——连接技术与人文,商业与公益,自我与他人。
手机震动,是小宇发来的语音消息:“刘星叔叔,我又想到了迷宫的新功能!可以加一个怪物,它会发出呼吸声,玩家要躲开它。你说可以吗?”
刘星笑着回复:“当然可以。我们一起设计怪物的呼吸声。”
然后他加了一句:“小宇,谢谢你教我‘听’颜色。”
几分钟后,小宇回复:“不用谢。叔叔,你也教我‘看’代码了。”
刘星放下手机,看向窗外。
城市的灯火依然闪烁,但他现在知道,在这片光海之外,还有另一个世界——一个用声音、触觉和想象力构建的世界。
而他很荣幸,能成为那个世界的访客,甚至,帮助建造一些桥梁。