Ch3nyang's blog web_stories

post

assignment_ind

about

data_object

github

local_offer

tag

rss_feed

rss

一觉醒来,全球计算机水平上升1000倍。

算法复习课

正在算法复习课上昏昏欲睡的我被同学摇醒,猛抬头看到讲台上皮笑肉不笑的老教授指着我,“来来来,那位睡觉的同学,你起来说说怎么设计一个复杂度为 \(O(1/n)\) 的排序算法?”

语毕,台下立马响起一阵哄笑声。

“这不是幼儿园小孩都会的东西吗?”

“长这么大不知道才怪了。”

“他是不是从文科转来的?”

最后一句话杀伤力很大,坐在前排的辅导员都回头看了我一眼,眼神里充满了对跨学科人才的同情。

我困惑地挠了挠头,回想了一下为了期末考试复习的算法知识,脱口而出四个字:“我不知道。”

此话一出,老教授面色骤然凝重起来,班里顿时鸦雀无声,甚至有同学已经打开微信朋友圈编起嘲笑我的段子来。那种安静不是普通的安静,而是像 Windows 更新到 99% 时突然卡住,全世界都不敢动,生怕一动就蓝屏。

我还没来得及再说话,只见教授颤颤巍巍地走到我面前。

“为什么?”

“\(O(1/n)\) 复杂度的算法根本不存在!”我斩钉截铁地回答。

此时下面的同学早已按捺不住笑起来。

“\(O(1/n)\) 复杂度的算法是什么高级内容吗,他怎么还说不存在?”

“老师,他是不是没预习《负复杂度导论》?”

“不至于吧,那本书初中就学完了。”

“静一静!大家静一静。”我看见教授拿出手帕擦着额头上的汗,“你为什么不知道这些?”

“这样的算法不是可以证明不存在吗?”我心里暗暗想着,手往书包里伸去掏我的课本,结果只找到厚厚的一本。打开一看,有好几百页,封面上写着《算法分析:从 \(O(1/n)\) 到 \(O(-n!)\) 》。

我脑袋嗡的一声。

我原来以为自己只是睡过头,没想到是睡过了一个文明阶段。

我赶紧翻到目录,第一页是“绪论:为什么线性复杂度是人类早期蒙昧思想的遗留”。第二页是“第一章:用排序算法顺便把宇宙熵排低一点”。第三页是“第二章:递归的祖父悖论及其家庭伦理问题”。我越翻越冷,感觉期末考试不是考试,是一场面向落后物种的自然选择。

“老师,我还要复习算法考试,恐怕没时间。”我面露难色。

教授大手一挥:“考试?免试,直接挂科!”

说罢,他丢下面面相觑的同学,把我带到了办公室。

退学通知书

我刚坐下,就看到一群老师拿着一些东西向我走来,为首的还是本校校长。校长的头发梳得很整齐,整齐到像是被某种优化算法从中间做过动态规划,每一根头发都找到了全局最优的位置。

“同学,”他紧张地握了握我的手,手心里竟然全是汗,“你的名字是什么?”

“朱浩嘉。”

“很好!”校长如释重负,“就根据你的名字起草退学通知书。”

带头人走了,后面的老师却越围越多。

一位看起来像教务处的老师拿出表格问我:“请问你是完全不知道 \(O(1/n)\) 排序,还是部分不知道?”

“有什么区别吗?”

“完全不知道属于学业问题,部分不知道属于态度问题。”

“那我完全不知道。”

他松了口气,在表格上打勾:“还好,不是态度问题。”

另一位老师凑过来:“你知道比特是什么吗?”

“知道,0 和 1。”

办公室里突然发出整齐的倒吸凉气声,仿佛我刚在化学实验室里宣布水是干的。

那位老师痛苦地闭上眼睛:“现在比特早就升级了。为了提高信息表达效率,我们使用复合比特。一个比特可以同时表示 0、1、2、3、4、5、6、7、8、9,以及‘领导已阅’。”

“那这还是比特吗?”

“当然是。”他说,“只是更符合时代发展要求。”

我正要反驳,校长秘书已经拿着打印好的退学通知书走进来。通知书打印在一张很厚的纸上,厚得像是为了防止我用它折纸飞机逃离学校。

通知书上写着:

该生计算机素养长期停留在传统正复杂度阶段,不能适应新时代高等教育需求。经研究决定,建议其回炉重造。

“回炉重造是什么意思?”我问。

“字面意思。”教务处老师说,“我们学校和隔壁幼儿园有联合培养项目。”

就在一片紧张的气氛中,我感到头晕目眩,眼前一黑,整个人失去了意识。

校医院

我醒来时躺在校医院,旁边站着三个医生和一个心理咨询师。

医生们看着我,表情像是在看一台还能开机的诺基亚手机。不是没价值,但肯定不能直接接入 6G 脑机接口。

“同学,你先别紧张。”医生说,“我们给你做了全套检查。血压正常,心率正常,脑电波也正常。唯一的问题是,你的知识体系严重滞后。”

我问:“滞后多少?”

医生翻了翻报告:“按目前标准,大约相当于唐朝人第一次看见共享单车。”

心理咨询师坐到我床边,语气温柔得像客服机器人刚更新了情感模块:“你最近有没有遭遇什么重大打击?”

“我睡了一觉。”

她点点头,在本子上写:“睡眠创伤。”

“不是,我就是上课睡着了。”

她继续写:“否认创伤。”

“你别写了。”

她又写:“攻击记录人员。”

我放弃了。

这时,护士拿来一杯水和一片药。

“这是什么药?”

“补算片。”护士说,“给计算机基础薄弱的人吃的。主要成分是维生素 B、镁、锌和少量编译原理。”

我谨慎地问:“有副作用吗?”

“可能会梦见自己在写 Rust。”

我立刻把药放回盘子里。

医生叹了口气:“你现在最大的问题不是身体,是时代。你要接受现实。昨天晚上,全世界计算机水平上升了 1000 倍。大家都适应得很好,只有你醒来以后像一段未迁移的遗留代码。”

“为什么会上升 1000 倍?”

医生犹豫了一下:“目前主流解释有三种。第一,外星文明向地球发送了超算补丁。第二,人类集体觉醒了隐藏天赋。第三,教育部提前批量下发了未来教材。”

“哪种可能性最大?”

“第三种。”医生说,“因为最恐怖。”

新世界说明书

校医院建议我先回宿舍休息,顺便适应一下新世界。

我走出门,发现校园已经不是我熟悉的校园。路边的垃圾桶正在自动分类,两个垃圾桶因为一只奶茶杯属于“可回收”还是“不可回收”吵了起来。自动售货机不再卖可乐,而是卖算力券、显存口香糖和“24 小时不报错护身符”。操场上有一群大一新生在军训,教官喊:“向右转!”学生们整齐地转过去。教官又喊:“向量化!”学生们立刻变成一排矩阵。

我路过图书馆,门口贴着一张海报:

“热烈庆祝我校在全国大学生量子冒泡排序竞赛中荣获三等奖。”

我心想,还好只是三等奖,说明世界虽然疯了,但还没完全疯。

下一秒我看到小字:

“一等奖空缺,因参赛队伍均在比赛开始前将比赛结果排完,无法判定先后。”

我打开手机,准备上网看看新闻。手机却弹出提示:

“检测到用户计算机水平低于当前社会平均值 99.9%,是否开启老年模式?”

我点了“否”。

手机又问:“是否开启古代人模式?”

我愤怒地点了“否”。

手机沉默两秒,弹出第三个选项:“是否开启石器时代友好模式?”

我关掉屏幕,觉得一个人和手机之间最基本的尊严已经破裂。

宿舍楼下,舍友老张正蹲在地上修共享单车。我问他在干什么。

“车坏了。”

“你不是学软件的吗?”

“是啊。”老张头也不抬,“所以我正在给车重写固件。”

“共享单车还有固件?”

他抬头看我,眼神里有一种克制的怜悯:“兄弟,现在连馒头都有固件。你早上吃的馒头如果不更新,会在胃里提示版本过低。”

我突然很庆幸自己没吃早饭。

老张听说我不会 \(O(1/n)\) 排序,明显倒退了半步。

“你别这样。”我说,“我们好歹是舍友。”

“不是我嫌弃你。”他说,“主要是学校刚发通知,要求大家和低算力人群保持适当距离,防止思维降频。”

我说:“思维还能降频?”

“当然。”老张严肃地说,“去年隔壁学院有个人和哲学系聊了三天,回来以后连 Docker 都不会用了。”

这话听起来很不科学,但考虑到眼下这个世界,我已经没有资格评价什么叫科学。

家庭技术支持

我回到宿舍,第一件事是给我妈打电话。

电话刚接通,我妈就说:“儿子,你醒啦?快帮妈妈看一下冰箱。”

我感动得差点哭出来。原来不管世界变成什么样,妈妈的第一反应永远是让你修家电。人类文明也许会突飞猛进,但家庭技术支持这项古老制度坚如磐石,像刻在 DNA 里的售后协议。

“冰箱怎么了?”

“它说我昨晚放进去的剩菜数据结构不合理,拒绝制冷。”

“你重启一下。”

电话那头沉默了。

我妈小心翼翼地问:“儿子,你最近是不是压力太大了?”

“怎么了?”

“现在谁还重启啊。重启是上个时代的土办法。你爸听见都笑了。”

我爸在旁边说:“让他别管了,我已经把冰箱的内核 patch 了。”

我握着手机,感觉家庭地位正在以自由落体的速度下降。

我妈又问:“对了,你算法考试准备得怎么样?”

“可能不用考了。”

“这么厉害?”

“不是,我可能要退学。”

电话那头安静了一下。

我妈说:“退学也没事。现在社会变化快,学历不重要,能力重要。你看你爸,昨天还不会写代码,今天已经给电饭煲提交 PR 了。”

我爸在旁边补充:“被拒了。维护者说我缩进风格太落后。”

我问:“你们怎么都突然会这些?”

“不知道啊。”我妈说,“昨晚睡前我还在刷短视频,今天醒来就看懂了《分布式系统一致性协议在厨房管理中的应用》。我现在觉得你小时候把玩具乱放,主要是缺少 Raft。”

我很想说,妈,小时候我把玩具乱放只是因为我懒,和分布式一致性没有关系。但我忍住了。一个大学生如果连亲妈都辩不过,就不要再谈什么计算机科学了。

挂电话前,我妈安慰我:“别怕,实在不行回来。小区门口新开了一个培训班,专门教成年人从零开始学习负时间复杂度。广告说七天包会,十四天包退。”

“退什么?”

“退化。”

我觉得这个广告很诚实。

人类兼容性测试

下午,学校通知我去参加“人类兼容性测试”。地点在计算机学院地下三层。

我以前一直不知道学院还有地下三层。老张说原来没有,今天早上编译出来的。

地下三层很宽敞,墙上挂着横幅:

“关心落后同学,推进版本统一。”

我排队时发现,队伍里不止我一个人。前面有一个体育生,后面有一个历史系同学,远处还有一位老师,看样子是教高等数学的。他们表情都很复杂,像是被邀请参加一个自己听不懂但又不能不去的团建。

测试分三关。

第一关,基础问答。

考官问我:“请证明 P 不等于 NP,要求使用三种语言,其中一种必须是 SQL。”

我说:“这不是世界难题吗?”

考官皱眉:“世界难题?同学,请你尊重一下小学奥数。”

我说:“不会。”

他在表格上写:“数学表达能力尚停留在现实主义阶段。”

第二关,编程实践。

考官给我一台电脑,让我写一个程序,把一亿个整数排序,并要求程序在运行前就输出结果。

我说:“运行前怎么知道结果?”

“这就是考点。”

我盯着屏幕想了半天,最后写了:

Python

print("已排序")

考官看完后沉默了很久。

“从技术上讲,”他说,“你这段程序非常落后。但从产品上讲,它很先进。”

他给了我 2 分。

第三关,社会适应性。

一个工作人员把我带进小房间,里面只有一张桌子和一个摄像头。屏幕上出现题目:

“当你发现全世界计算机水平上升 1000 倍,而你没有上升时,你应当如何做?”

四个选项:

A. 努力学习,迎头赶上。

B. 反思自己,拥抱变化。

C. 接受辅导,服从安排。

D. 质疑世界,要求解释。

我刚想选 D,摄像头突然转向我,像一位监考老师在用灵魂点名。

我选了 A。

屏幕弹出提示:“回答正确,但眼神错误。”

我心里一惊。这个世界连眼神都能判卷,教育技术确实进步了,只是进步方向像一辆无人驾驶汽车在悬崖边自信漂移。

测试结束后,工作人员宣布结果:“经评估,你不适合继续接受普通高等教育。”

我问:“那我适合什么?”

“研究。”

“研究什么?”

“被研究。”

算法养老院

他们把我送到一个叫“传统计算机文化保护中心”的地方。

门口有牌子:

“本中心致力于保护早期人类计算机文化遗产,包括但不限于冒泡排序、链表反转、手写递归、命令行配环境、相信代码能一次跑通等珍贵民俗。”

我一进门,就看见几个和我差不多年纪的人围坐在一起,眼神空洞地讨论 Git 冲突。一个老头正在黑板上写 C 语言指针,旁边围着一群小学生参观。

讲解员说:“大家看,这就是早期程序员用来表达痛苦的符号,星号。”

小学生们发出惊叹。

“叔叔,他们为什么不用意念编程?”

老头回头看了小孩一眼:“因为我们那时候还相信键盘。”

我被安排到二号房间,房间里有床、桌子、电脑和一本《现代社会适应手册》。手册第一章标题是“承认落后是进步的开始”。第二章是“如何优雅地向智能马桶道歉”。第三章是“不要在公共场合说重启、缓存、二分查找等敏感词”。

晚上,中心组织我们观看新闻。

电视里主持人满脸喜悦:

“自全球计算机水平跃升以来,社会生产效率显著提升。医院平均问诊时间缩短至 0.3 秒,医生只需看一眼患者就能生成病历、诊断、治疗方案和医患纠纷预案。法院平均审判时间缩短至 0.1 秒,判决书在案件发生前自动生成。餐饮行业也迎来重大变革,厨师通过预测顾客饥饿轨迹,实现菜品提前入口。”

旁边一个历史系同学小声问:“提前入口是什么意思?”

体育生说:“可能是还没点菜,菜已经到胃里了。”

我说:“那账单呢?”

他想了想:“应该已经逾期了。”

新闻继续播报:“不过,少数人群因历史原因暂未完成水平跃迁。专家提醒,社会应给予他们关怀,但不建议让他们接触关键系统、复杂电器和带有思考功能的门把手。”

我看着电视里“少数人群”的配图,发现正是我们中心大门口。

一个人被时代抛弃并不可怕,可怕的是时代抛弃你以后还给你做了宣传片。

负复杂度革命

在保护中心住了三天后,我逐渐摸清了这个新世界的基本逻辑。

第一,所有算法都变快了。

第二,所有人都觉得这很正常。

第三,所有解释都比问题本身更离谱。

比如 \(O(1/n)\) 排序。

中心给我们安排了补课,老师是一个十二岁的初中生。他站在讲台上,用粉笔写下:

“所谓 \(O(1/n)\),就是数据越多,排序越快。”

体育生举手:“为什么?”

初中生叹了口气,像在面对一群智力尚未开化的原始部落。

“因为数据越多,越容易自己排好。你们没见过食堂排队吗?人少的时候大家乱站,人多的时候自然就排成蛇形了。这就是群体复杂度自发坍缩。”

我竟然觉得有点道理。

他又讲 \(O(-n)\) 算法。

“\(O(-n)\) 的意思是,输入越多,不但不花时间,还能把以前花掉的时间退回来。”

我问:“退回来的时间去哪里领?”

“教务系统。”

“那为什么我大学四年没有领到?”

“因为你没有绑定时间账户。”

课堂上一片恍然大悟,只有我觉得事情不太对。这个解释像把一辆自行车装上火箭发动机,虽然跑得快,但你很难说它还是自行车。

下课后,我去图书室查资料。图书室里全是新教材,最薄的一本叫《三分钟精通操作系统》,最厚的一本叫《如何向不懂计算机的人解释你已经不懂他们了》。

我翻了很多资料,终于发现一个奇怪的问题:所有教材的出版日期都是今天。

所有论文的发表日期也是今天。

所有引用文献,还是今天。

这个学术体系像一只刚出生就声称自己德高望重的婴儿,穿着院士袍,嘴里还叼着奶嘴。

我心里冒出一个可怕的念头:也许不是世界计算机水平上升了 1000 倍,而是所有人被某种东西说服了,让他们相信自己已经上升了 1000 倍。

这个念头很危险。它一出现,我的手机就震了一下。

“检测到用户产生低版本怀疑。请及时更新世界观。”

我把手机反扣在桌上。

它又震了一下。

“反扣手机不能解决问题。”

这个时代最大的问题是,连手机都比我会抬杠。

期末考试

一周后,学校突然通知我,可以回去参加期末考试。

原因很简单:教育部要求保留少量传统学生样本,用于检验新时代教育成果。说白了,就是拿我当对照组。

考试那天,考场里坐满了学生。大家神情轻松,有人甚至没带笔,只带了一块量子橡皮。监考老师发下试卷,我看了一眼题目,差点当场失去学籍。

第一题:

“请设计一个 \(O(1/n)\) 排序算法,并说明其在 \(n\) 趋近无穷时如何顺便解决宿舍卫生问题。”

第二题:

“请证明你没有证明过的结论已经被你证明。”

第三题:

“某程序运行时间为 -3 秒,请问它应向用户退还多少青春?”

第四题:

“简述递归调用自己的祖先时应遵守的伦理规范。”

我看着试卷,觉得出题老师已经不满足于考计算机了,他还想顺便审判人类。

考场里刷刷刷都是写字声。坐在我旁边的同学写得飞快,笔尖在纸上摩擦,像一台正在愤怒打印毕业论文的喷墨打印机。我偷偷瞄了一眼,他第一题写的是:“令数组羞愧,则其自发有序。”

我惊了。这不叫算法,这叫心理咨询。

我盯着试卷想了很久,终于在第一题下面写:

“不存在 \(O(1/n)\) 排序算法。因为算法的运行时间不可能随着输入规模增加而无限趋近于零。若题目要求的是某种新定义,请先给出严格模型。”

写完以后,我感觉自己不是在答题,而是在旧世界最后一块木板上签名。

第二题,我写:“不能证明。”

第三题,我写:“程序不能退还青春,最多退还内存。”

第四题,我写:“递归没有祖先,只有调用栈。”

交卷时,监考老师看了我的试卷,表情极其复杂。

“同学,”他说,“你知道你这样答很可能不及格吗?”

“知道。”

“那你为什么还要这样写?”

我想了想,说:“因为我只会这个。”

他愣了一下,没有再说话。

满分

第二天,成绩公布。

我得了满分。

我站在公告栏前,怀疑自己出现了精神分裂。旁边的同学也很震惊,老张看着我,像看着一只突然会说人话的拖鞋。

“你怎么满分?”

“我也不知道。”

校长很快派人把我请到办公室。这次办公室里没有退学通知书,只有一排专家。老教授坐在最中间,脸色比上次更难看。

校长说:“同学,我们重新研究了你的试卷,发现你提出了一个极其重要的问题。”

“什么问题?”

“严格模型。”

教授推了推眼镜:“这几天全世界都在使用 \(O(1/n)\)、\(O(-n)\)、\(O(-n!)\) 等概念,但没有人给出过严格定义。大家都觉得自己懂了,于是就没人问。”

我问:“那之前那些算法呢?”

教授沉默了一会儿:“多数情况下,是把程序提前运行完,再声称它运行得很快。”

“那 \(O(-n)\) 呢?”

“那是财务处提出的。主要用于解释预算为什么越花越多。”

“量子冒泡排序呢?”

“把冒泡排序放进一个黑盒里,不看它,它就既排好了又没排好。打开黑盒以后,如果没排好,就说观测行为干扰了结果。”

我听完后半天说不出话。

原来所谓全球计算机水平上升 1000 倍,并不是所有人突然变聪明了,而是所有人突然变得非常会命名。一个概念只要起得足够高级,就像给普通馒头刷上一层金粉,吃起来还是噎,但看起来已经不像主食,像金融产品。

校长叹气:“现在问题很严重。大量系统已经按新理论上线。医院、银行、交通、食堂、教务处,全都接入了负复杂度框架。”

“运行得怎么样?”

“非常快。”

“正确吗?”

“这不是主要指标。”

我突然理解了这个世界。它不是计算机水平上升了 1000 倍,而是 KPI 上升了 1000 倍。以前程序跑不出来,叫 bug;现在程序跑不出来,叫超前于硬件。以前算法不对,叫错误;现在算法不对,叫模型尚未被现实充分理解。

老教授看着我:“我们需要你。”

我警惕起来:“需要我做什么?”

“作为传统计算机知识的幸存者,帮助我们修复世界。”

我问:“具体怎么修?”

校长把一台电脑推到我面前。

“先从教务系统开始。”

教务系统

教务系统是全校最古老、最神秘、最不能惹的系统。

据说它诞生于互联网早期,经历过无数次重构、外包、验收、二次外包和没人敢删的临时表。它不像软件,更像一种地质结构。每一层代码下面都有更古老的代码,挖到最后可能出现甲骨文和 PHP 混写的注释。

新世界到来后,学校把教务系统升级成了“负复杂度智慧学业治理平台”。升级结果非常显著:学生还没选课,课程已经冲突;老师还没录成绩,学生已经挂科;毕业生还没答辩,论文已经查重失败。

校长说:“现在全校只有一个人能登录进去。”

“谁?”

“你。”

“为什么?”

“因为系统版本太老,只认低水平用户。”

这话让我很受伤,但我没有反驳。人在关键岗位上,总要接受一些不体面的赞美。

我输入账号密码,竟然真的进去了。屏幕上弹出熟悉的界面:灰色按钮、蓝色链接、错位表格、以及一个无论点多少次都没有反应的“返回首页”。那一刻我差点热泪盈眶。新世界再先进,也还有一些东西保持着原始的丑陋,像文明废墟里顽强生长的塑料袋。

我检查后台,发现所谓“全球计算机水平上升 1000 倍”的源头,竟然是一条配置。

YAML

global_computer_level_multiplier: 1000

它出现在教务系统的实验功能里,注释写着:

Text

// TODO: 临时演示用,上线前删除

我盯着这行注释,心中升起一种熟悉的恐惧。

所有程序员都知道,“上线前删除”这几个字的意思通常是:它会陪伴人类直到宇宙热寂。

原来昨晚教务系统进行全校同步时,这条配置被错误推送到了全国教育云。教育云又接入了新闻系统、社交平台、教材平台、手机厂商和小区冰箱。于是全世界醒来以后,都被告知计算机水平上升了 1000 倍。

更离谱的是,人们居然信了。

他们信的速度比系统推送还快,像一群等待升级很久的应用,终于等到一个写着“重大优化”的弹窗,根本不看更新内容就点了同意。

我问校长:“为什么没人怀疑?”

校长说:“怀疑需要成本。相信只需要转发。”

这句话过于深刻,我一时分不清他是教育家还是产品经理。

回滚

修复方案很简单:把 1000 改回 1。

但执行起来很困难。

因为配置已经扩散到太多地方。每个系统都在基于 1000 倍水平运行,或者至少声称自己在运行。如果直接回滚,会造成社会认知剧烈震荡。

银行会发现自己的负利率理财其实只是亏钱。

医院会发现 0.3 秒问诊主要依赖医生语速。

法院会发现案件发生前生成判决书这件事虽然高效,但容易让案件产生自尊心。

食堂会发现提前入口的饭菜,其实是昨天剩的。

校长问我有没有温和一点的办法。

我想了想:“可以先改成 999。”

“有什么区别?”

“心理上比较平滑。”

专家们讨论了半小时,认为这个方案稳妥、渐进、兼顾改革力度和社会承受能力。于是我每天把倍率调低一点:999、998、997……

世界开始出现微妙变化。

第一天,手机取消了石器时代友好模式,只保留古代人模式。

第三天,共享单车停止要求用户阅读固件更新日志。

第七天,冰箱重新承认剩菜的合法地位。

第十天,初中生老师在课堂上讲 \(O(-n)\) 时突然卡壳,最后承认自己其实也不太懂。

第十五天,学校取消了人类兼容性测试,改为普通补考。

第二十天,老张偷偷来找我:“兄弟,你能不能教我二分查找?”

我看着他真诚的眼神,心里一阵感慨。文明倒退有时也不是坏事,至少朋友又能坐在一起承认自己不会了。

当然,也有人强烈反对回滚。

某些专家在网上发文,痛斥“传统复杂度势力妄图开历史倒车”。有培训机构连夜推出课程《从 1000 倍到 1 倍:普通人如何抓住降级红利》。还有博主分析,计算机水平回落不是坏事,说明上升空间更大,建议大家长期持有自己。

我看完觉得,人类真正的核心竞争力不是计算,而是解释。只要解释能力足够强,任何事情都能显得没有失败,只有转型。

重新考试

一个月后,倍率终于改回 1。

世界恢复了大半。冒泡排序重新变慢,教务系统继续难用,手机不再嘲笑我,馒头也不需要更新固件。唯一没有恢复的是大家的记忆。

人们对那段时间讳莫如深。

教授说:“当时我们只是在探索前沿。”

校长说:“学校始终重视基础教育。”

同学说:“我其实一直觉得 \(O(1/n)\) 不太靠谱。”

老张说:“我当时和你保持距离,主要是怕影响你独立思考。”

我没有拆穿他。人类社会能运行下去,靠的不只是技术,还有大家互相放过的默契。真相太硬,天天拿出来敲人,迟早把朋友敲没。

期末考试重新举行。

这次试卷正常多了。第一题是快速排序,第二题是最短路径,第三题是动态规划。我看到题目时竟然有些亲切,像在异国他乡遇见一个同样不会说当地语言的老乡。

我认真答完,交卷。

成绩出来,我 61 分。

老张 59 分。

他看着成绩,悲愤地说:“凭什么你及格?”

我说:“可能因为我经历过世界上升 1000 倍。”

“那你学到了什么?”

我想了想:“学到了不要相信教务系统的实验功能。”

他沉默了一会儿:“这确实是很深刻的人生经验。”

尾声

后来学校没有让我退学,还给我发了一张奖状。

奖状上写着:

“在全球计算机水平异常波动事件中,该同学坚持传统认知,勇于提出严格定义,为维护基础科学尊严作出一定贡献。”

“一定贡献”这四个字很精准,既肯定了我,又防止我飘。奖状下面还有一行小字:

“本奖状由负复杂度智慧学业治理平台生成,如有错误,以平台为准。”

我把奖状挂在宿舍墙上,旁边是补考复习资料。

偶尔我会想,如果那天我没有在算法课上睡着,是不是就会像其他人一样醒来后自然掌握 \(O(1/n)\) 排序,顺利融入新世界。也许我会在朋友圈转发“拥抱 1000 倍时代”,也许我会嘲笑某个还相信正复杂度的人,也许我会报一个培训班,学习如何把错误包装成趋势。

但我偏偏睡着了。

有时落后不是坏事。落后的人跑得慢,反而能看清大家为什么突然开始奔跑。先进的人冲在前面,风很大,口号也很响,很容易以为自己正在抵达未来,实际上只是被一个配置文件推了一下。

至于 \(O(1/n)\) 排序算法,我后来还是没有学会。

不过这已经不重要了。

因为在那之后,每当有人在课堂上、会议上、新闻里说出一个听起来非常先进但又让人感觉哪里不对的概念时,我都会先问一句:

“请问,有严格定义吗?”

通常这个问题一出口,房间里就会安静下来。

那种安静和我第一次在算法课上说“不知道”时很像。区别在于,这一次,终于有人开始一起挠头了。