晚上收拾书桌,手往抽屉底下一掏,摸出个硬壳子。《PowerBuilder8.0程序设计实训教程》。封皮黄得发脆,卷着边,内页还夹着当年用荧光笔狂画的批注:“注意:必须先建数据库,再写界面,顺序不能反。”啧,那时候可真傻。满脑子就一个死理:只要死磕步骤,代码准能跑起来。现在回头看,连个报错都看得云里雾里,居然敢把人生跟编译器划等号。初生牛犊不怕虎?我看是压根没怕过。
后来咂摸过味儿来,生活压根不是本实训教程。它不给你排好“第一章:创建窗口”,更不管“第二章:调试语法”。日子是散装的。经常跳着走。动不动就死机。最要命的是,总在你以为终于编译成功、能松口气喘个匀的时候,冷不丁弹个错。查都查不出毛病。可能吧。人总得撞几次南墙才信邪。撞疼了,也就懂了。
书里教的那套,主打一个死规矩。点一下按钮,必须绑死一个函数;拉个数据窗口,字段得提前定好。错一个字母,编译器立马标红。精确到第几行第几列。顺着报错信息往下捋,总能严丝合缝。那时候我们特吃这一套,就图个“心里有底”。总觉得只要肯下功夫、按部就班,人生也能像段漂亮代码,一键编译,顺顺当当跑起来。不过话说回来,这种“严丝合缝”的快感,多少有点自欺欺人。现实里哪有那么多的“精确到行”?大部分时候,连个明确的报错提示都懒得给你留。
可一脚踏出校门,世界直接把语法检查给拔了。选什么行当?进哪家公司?跟谁搭伙过日子?在哪个城市安家?全没标准答案,更没人给你列操作手册。只能自己上手试。试岔了,没有编译器帮你标红,只有第二天早起挤地铁,盯着车窗玻璃里那张疲惫的脸,心里咯噔一下,知道上一步踩坑了。那时候大家都爱找“人生说明书”:扒经验贴,听长辈唠叨,报名各种“自我提升”的速成班。好像只要把别人的路抄一遍,自己的程序就能少出点bug。但我觉得这事儿未必管用。别人的代码跑通了,你的运行环境不一样,照样全是兼容报错。
说白了,死盯“步骤”这点执念,就是怕不确定性。怕选错。怕绕弯路。怕一切脱了轨。可生活偏偏就爱搞“溢出”。你憋足了劲规划三年。可能因为行业一震荡、碰见个对的人,或者一场突如其来的急病,全给你掀翻。书里的实训项目,做完一章就能翻篇;日子可没这规矩。只有没完没了的“进行中”。你没法按暂停键去翻下一页,只能顶着满屏警告接着跑。可能成年人的常态,也就是在报错和重试之间反复横跳吧。
以前总琢磨,长大就是学会写更严密的“人生代码”。现在倒觉得,真成熟是得认怂,得接受“跑不通也没辙”。允许某个模块卡半天。允许有些功能压根用不上。允许自己在个死胡同里多赖一会儿。书里没写的那些“异常处理”,才是生活真要考的题。编译报错的时候,别急着翻日志找茬。先瞅瞅窗外的天,灌杯温水,等系统自己缓过来。这事儿急不来。硬拧着转,多半连散热风扇都得给你干烧了。
把旧教程合上,页码还卡在第十二章。没再往下翻。有些东西,本来就没必要非得跑通。日子嘛,偶尔报个错,死机重启一下,也就这么一天天过下去了。反正明天还得早起挤地铁。代码跑不跑得通,先活过今天再说。