第1章 世界静默,键盘独鸣

第1章 世界静默,键盘独鸣

褚云帆是被一阵刺耳的警报声吵醒的。

那声音像是用生锈的锯子切割金属,尖锐得能刺穿耳膜。他猛地从工位上抬起头,后颈传来一阵僵硬的酸痛------昨晚又通宵了。

眼前的世界模糊了几秒。

他习惯性地伸手去摸眼镜,手指触到冰凉的镜架。戴上。

视野清晰起来。

然后他愣住了。

深蓝科技开放式办公区的景象,和他记忆中任何一次加班后的清晨都不同。

太吵了。

不是键盘敲击声------那种清脆规律的"咔嗒咔嗒"早就消失了。取而代之的是一片混乱的、毫无节奏的敲打声,像是幼儿园小朋友在胡乱拍打玩具琴。

褚云帆揉了揉酸涩的眼睛。

他看见左侧工位的李工。

李工是公司十年的老程序员,秃顶,脾气暴躁,但代码写得极稳。此刻他正对着屏幕,双手悬在键盘上方,手指微微颤抖。他的嘴唇在动,好像在默念什么咒语。

然后他按下一个键。

"a"。

屏幕上跳出一个字母。

李工盯着那个"a",额头渗出细密的汗珠。他深吸一口气,又按下一个键。

"s"。

"d"。

"f"。

他像是在玩打字游戏,但打出来的字母毫无意义。asdfasdfasdf------一行行重复的字符在屏幕上滚动。

"不对......"李工喃喃自语,"循环......for循环该怎么写来着?"

他的手指悬在键盘上,迟迟落不下去。

好像有什么东西卡住了。

褚云帆转过头。

整个办公区两百多个工位,所有人都在做同样的事------对着键盘发呆,然后敲出乱七八糟的字符。有人试图写注释,打出来的却是"#¥%......&*()"。有人想定义变量,屏幕上出现的是"int a = ;;;;;;;;;"。

分号。

无数个分号。

像是某种集体癔症。

"谁能写个循环?!"

一声咆哮从过道传来。

主管老王站在走廊中央,四十多岁的中年男人,此刻脸涨得通红。他手里举着一台平板电脑,屏幕上是半截代码------看起来像是某个脚本的开头,但语法完全错了。

"就一个简单的for循环!"老王的声音在发抖,"迭代数组!打印数字!这他妈是实习生第一天就该会的东西!"

没人回应。

只有键盘的胡乱敲击声。

老王走到最近的一个工位,抢过员工的键盘。他深吸一口气,手指放在键盘上。

然后僵住了。

他的嘴唇在动,好像在回忆什么。几秒钟后,他开始敲击。

for (i = 0; i < 10; i++)

打到"i++"时,他停住了。

"加加......"老王盯着屏幕,"是i++还是++i?前置和后置有什么区别来着?"

他想了五秒钟。

然后删掉了整行。

重新打。

for (int i = 0; i < 10; i = i + 1)

这次语法对了。

但老王盯着那行代码,眼神空洞。他好像不记得接下来该写什么了。大括号?语句块?打印函数?

他的手在颤抖。

最终,他敲下一个分号,结束了这行代码。

for (int i = 0; i < 10; i = i + 1);

一个空循环。

毫无意义。

老王把键盘扔回桌上,发出"砰"的一声。他环顾四周,眼神里第一次出现了褚云帆从未见过的情绪。

恐惧。

"你们......"老王的声音低了下来,"你们都忘了吗?"

没人回答。

褚云帆低下头,看向自己的屏幕。

他的终端还开着。昨晚通宵重构的那个模块,代码还停留在编辑器中。三百多行,结构清晰,注释完整,是他花了六个小时精心打磨的。

他下意识地滚动鼠标。

代码正常显示。

没有乱码。

他愣了一下。

然后,几乎是出于本能------程序员的本能,那种写完代码总要测试一下的本能------他新建了一个文件。

手指放在键盘上。

肌肉记忆开始工作。

他甚至没有思考,指尖就动了起来。敲击声清脆、连贯、有节奏,和周围那片混乱的噪音形成鲜明对比。

print('Hello World')

回车。

屏幕下方,终端窗口弹出。

清晰的白色字体显示在黑色背景上:

Hello World

成功了。

褚云帆盯着那行字,看了三秒钟。

然后他猛地抬起头。

办公室里突然安静了。

不知道从什么时候开始,所有人都停下了手里的动作。键盘声消失了。说话声消失了。连呼吸声都好像变轻了。

两百多双眼睛,齐刷刷地看向他。

那些眼神很复杂。

有困惑。

有茫然。

但更多的是......一种褚云帆无法理解的东西。像是原始人看到同部落的人突然徒手生起了火。像是中世纪农民看到邻居念出了恶魔的文字。

怪物。

他们在看一个怪物。

褚云帆的后背瞬间被冷汗浸湿。

他几乎是条件反射地按下Ctrl+A,然后Delete。屏幕上的代码消失了。终端窗口关闭了。他抬起头,脸上挤出一个和周围人同样困惑的表情。

"怎么了?"他问,声音有点干涩,"你们......都看着我干嘛?"

没人说话。

李工张了张嘴,好像想说什么,但最终只是摇了摇头,转回了自己的屏幕。

老王盯着褚云帆看了几秒,眼神里的恐惧慢慢变成了怀疑。但他也没说什么,只是转身走回了自己的办公室,重重关上了门。

警报声还在响。

但已经没人管了。

褚云帆坐在工位上,心脏狂跳。他强迫自己深呼吸,一次,两次。手指在桌子下面微微颤抖。

不对劲。

太不对劲了。

他打开浏览器,点开新闻网站。

首页全是乱码。

不,不是乱码------是各种语法的碎片。中文里夹杂着英文单词,英文句子里混着编程语言的符号。像是整个网站的渲染引擎崩了。

他刷新。

还是这样。

他换了个网站。

同样的情况。

最终,他在一个极简的纯文本论坛上,看到了一条还能勉强阅读的消息:

【紧急通知:全球范围内出现未知技术故障。编程语言理解能力普遍异常。建议所有技术人员停止操作,等待进一步通知。】

下面跟了几百条回复。

"我连Hello World都写不出来了......"

"变量是什么?函数是什么?我好像做了个梦,梦里我会写代码,但醒来全忘了。"

"不是忘了!是脑子转不动!我看到for这个单词,知道它是循环,但就是想不起来该怎么用!"

"全球性的?不只是我们公司?"

"不只是我们国家。我刚问了国外的朋友,一样。"

褚云帆一条条往下翻。

手指越来越冷。

中午十二点,公司强制断网。

广播里传来行政总监的声音,听起来很疲惫:"全体同事请注意,接上级通知,即刻起停止所有技术相关工作。请大家......保持冷静。等待进一步安排。"

办公区一片死寂。

没人动。

大家就坐在工位上,盯着黑屏的显示器,或者盯着自己的手。好像只要多看一会儿,那些丢失的技能就会回来。

褚云帆站起来,走向茶水间。

路过李工工位时,他瞥了一眼屏幕。

李工在写文档。

用中文。

"如何打开终端:第一步,找到屏幕左下角的开始菜单。第二步,点击。第三步,在搜索框里输入'cmd'。第四步......"

他写得很慢。

每一个字都要想很久。

好像这不是常识,而是某种需要详细记录的秘密知识。

茶水间里,几个同事在低声说话。

"你还能记得多少?"

"我......我记得if是判断。else是否则。但具体怎么写,我脑子里一片空白。"

"我也是。就好像有人把我大脑里关于编程的那部分,整个挖掉了。"

"不是挖掉。"另一个声音说,"是蒙上了一层雾。你知道雾后面有东西,但就是看不清。"

褚云帆接了一杯水。

水温很正常。

但他喝下去的时候,感觉喉咙发干。

下午两点,公司宣布提前下班。

"基础设施不稳定,"老王在群里发消息,"交通系统可能受影响,大家早点回家。"

没人欢呼。

大家沉默地收拾东西,沉默地离开工位。动作都很慢,好像还在消化今天发生的一切。

褚云帆背起包,走进电梯。

电梯里有六个人。

没人说话。

大家盯着楼层数字,眼神空洞。

电梯下到一楼,"叮"的一声开门。

褚云帆走出去,然后停住了脚步。

大厦外的景象,比他想象的更糟。


街道上,红绿灯在胡乱闪烁。

不是故障的那种闪烁------是毫无规律。红灯亮0.5秒,绿灯亮2秒,黄灯亮0.1秒,然后又跳回红灯。三个灯有时候会同时亮起,发出刺眼的光。

十字路口堵成了一团。

自动驾驶汽车停在路中间,有的在缓慢地原地转圈,有的在前后轻微挪动,像是失去了方向的昆虫。一辆公交车的电子屏上滚动着乱码,司机试图手动操作,但方向盘好像锁死了。

人行道上,人们拿着手机,脸上都是茫然。

"地图用不了了......"

"叫车软件显示服务器错误。"

"连扫码支付都不行了!刚才买瓶水,扫了五分钟都没反应!"

褚云帆站在大厦门口,看着这一切。

阳光很好。

天空很蓝。

但世界好像突然变成了一个劣质的、漏洞百出的程序。每一个模块都在报错,每一个函数都在崩溃。

他抬起左手,看了一眼手腕上的表。

那是一块老旧的电子表,表盘不是数字,而是一行不断跳动的代码。

是他自己改装的。

表盘上显示着:

while (true) { display_time(); sleep(1000); }

一个无限循环,每秒刷新一次时间。

此刻,代码正常滚动。

时间正常显示。

14:37:05。

褚云帆盯着那行代码,看了很久。

然后他抬起头,看向街道对面。

那里有一家咖啡馆,橱窗上贴着二维码,旁边写着"扫码点单,享受优惠"。一个年轻人正拿着手机对着二维码,反复调整角度,表情越来越烦躁。

"怎么扫不出来啊......"年轻人嘟囔。

褚云帆知道为什么。

扫码程序底层依赖图像识别库,识别库依赖算法,算法依赖代码。

代码写不出来了。

所以识别库无法更新,算法无法优化,程序最终会随着设备老化而逐渐失效。

就像现在。

就像整个世界。

他深吸一口气,把袖子拉下来,盖住手表。

然后迈开脚步,走进混乱的街道。

回家的路原本只需要二十分钟。

今天他走了一个小时。

因为要避开所有依赖智能调度的路口,要绕开那些在原地打转的自动驾驶汽车,要小心突然乱闪的交通信号灯。

路上,他看到了更多细节。

一家银行的ATM机,屏幕蓝屏,显示着一串错误代码。几个人围在旁边,试图理解那些代码的意思,但显然失败了。

一个外卖机器人卡在路边绿化带里,轮子空转,扬声器里反复播放:"路径规划错误,请稍候......路径规划错误,请稍候......"

便利店门口,电子广告牌上本该播放促销视频的区域,现在显示着一行行调试信息:

Segmentation fault (core dumped)

相关推荐
泉城老铁3 小时前
如何用Spring Boot实现分布式锁?
java·redis·后端
代码or搬砖3 小时前
Java中操作Redis
java·开发语言·redis
en-route6 小时前
Spring 框架下 Redis 会话存储应用实践
java·redis·spring
sugarzhangnotes6 小时前
应用服务OOM引发GC异常,导致Redis请求超时失败的问题分析与解决
数据库·redis·测试工具
小满、7 小时前
Redis:数据结构与基础操作(String、List、Hash、Set、Sorted Set)
java·数据结构·redis·分布式锁
zjeweler7 小时前
redis tools gui ---Redis图形化漏洞利用工具
数据库·redis·web安全·缓存
武子康7 小时前
Java-192 深入拆解 EVCache 内部原理:Memcached 架构、Slab 分配与 LRU 过期机制全解析
数据库·redis·缓存·架构·memcached·guava·evcache
哈哈哈笑什么7 小时前
完整Redis分布式锁技术方案(基于Redisson)
redis·分布式·spring cloud
m0_488777658 小时前
Redis三种服务架构
redis·架构·集群·哨兵