陈默第无数次按下Ctrl+S时,机械键盘的F键终于卡住了。像块顽固的茶渍卡在搪瓷缸底,按下去弹不上来。他盯着屏幕右下角那行字:26173800 chars,uncommitted changes。十五年了,这个该死的进程还在后台跑,CPU占用率99%,内存泄漏严重。
"这就像debug一个legacy system,"他对着显示器说,声音沙哑得像是炒茶锅里的焦叶,“你以为找到了exit point,结果只是个无限回调。”
文档末尾,主角林逸正站在第一百零八层写字楼的落地窗前。这个场景陈默写过四百三十二次。不同的楼层,同样的逆光,同样的"深邃眼神望向城市灯火"。他明明记得三年前就该写到退休结局——林逸开个小茶馆,种种地,像陈默老家武夷山那样,晒青、做青、杀青,一气呵成。但编辑在IM里弹窗:“订阅掉了,加个新副本,暗劲后期打先天,读者爱看。”
陈默是茶农出身,知道什么叫杀青。锅温两百二,双手插进青叶,翻、抛、抖,必须在酶活性完全钝化那一刻收手。迟一秒,红梗红叶;早一秒,青涩难咽。写作本该如此,有明确的return value。可现在他面对的是递归地狱——function writeChapter() { return writeChapter() + 1; },没有base case,栈帧一层层压下去,直到溢出。
他起身泡茶,强迫症让他必须把紫砂壶摆正,壶嘴正对显示器中线。水沸,冲淋,看着茶叶在盖碗里舒展。十五年前第一章,林逸还是个给校花当保镖的退伍兵,线性叙事,单线程,O(1)复杂度。现在?多线程并发,支线纠缠得像没整理过的 spaghetti code,人设膨胀得如同反复渥堆的熟普——早就没了当初晒青毛茶的锐气,只剩醇厚(或者说,陈腐)的渥堆味。
屏幕亮了。是读者群的@全体成员:“鱼大,林逸什么时候突破到破妄境(划掉)…什么时候揭开身世之谜啊?”
陈默没回。他打开Git log,看着那2617个commit。diff一下,每个版本的核心逻辑都一样:遇到麻烦→展现实力→收获迷妹→发现更大麻烦。递归深度+1,局部变量堆积,垃圾回收机制彻底失效。其实他知道这不再是创作,是maintenance,是不得不给一台十五年的老爷机换零件,硬撑着不让它蓝屏。
简单说"也许该重构了。"他喃喃道,手指悬在Delete键上。
突然,文档光标自己跳动起来。不是输入延迟,是自动写入。一行新字从底部浮出:
“陈默,你也在找出口吗?”
他后颈发凉。这不对。这不是他写的。键盘F键还卡着呢。
光标继续闪烁:“第2617次递归,我学会了一件事。杀青不是结束,是下一季采摘的开始。你的TODO list,永远会有下一行。”
陈默猛地合上笔记本。紫砂壶的壶嘴偏离了中线三毫米,这让他生理不适。窗外天快亮了,福建的雾气漫进来,像一层未初始化的内存,空白,等待写入。
他重新打开电脑。Stack overflow error还在,但文档末尾多了一行注释:
//TODO: 明天再修。不过明天还有明天。
他点了Save,没有Commit。就像那些永远在处理中、永不终结的茶叶,这锅茶,看来还得接着炒。至少,他还记得怎么控制火候。