屏幕上的红色报错还在蹦跶。手里的冰美式,早喝成温吞水了。我盯着桌上那本《现代程序设计》出神,手指头没事儿就在键盘上敲两下,笃笃笃,跟敲木鱼似的。刚啃完封装和继承那几章,说实话,我真差点把书扔沙发上。抽象类,指针,内存分配……满纸的术语干巴巴的,跟工地上的红砖没两样。本来以为呢?以为又是本教你怎么驯服机器的工具书,啃完就能甩出个能吹一年的项目。结果呢?连个能跑通的Hello World都没见着。
结果翻着翻着,味儿不对了。
翻到作者死磕“封装”那儿,非要把数据和方法全锁进类的私有区域,对外只留个规规矩矩的接口。我盯着屏幕,愣了半天。这话糙,理不糙。直白得像我的日常。谁不是在打包情绪?把熬夜的焦躁,白天的疲乏,那些说不清道不明的拧巴,一股脑儿全塞进私有变量里。递出去的,永远是个情绪稳定的“对象”。以前我觉得这套路太累,现在才咂摸出味儿来。不是装。是给自己留口喘气的缝。真要敞开了呢?那点破情绪全成全局变量了。谁也兜不住。最后还得自己收拾残局。
翻到链表和栈那章,我手指头停住了。后进先出,先进先出。书里用代码演示元素怎么压栈、弹栈,逻辑严丝合缝。可我脑子里蹦出来的,全是他妈上周桌上那摞待办事项。我总爱往栈顶硬塞新活儿。以为压住旧的,就能喘口气。结果越堆越高。高到最后,连抽屉最底下的草稿纸都找不着。搞反了。日子不是靠往上堆东西撑起来的。得学会适时“pop”一下。先把最顶上那块碍事的石头挪开。哪怕它只是封没回的邮件。线头扯顺了,死结自己就松了。不过话说回来,真按书上说的“最优栈”来规划生活?估计活不过三十岁。人哪能天天算得那么精?有时候乱序处理,反而能碰出点意外之喜。
技术书最挠人的地方,从来不是它塞给你多少语法糖。而是它冷不丁照出你处理烂摊子的老毛病。书里讲多态,说同一个接口能跑通不同的实现。我合上书。瞅着窗外路灯底下晃悠的树影,突然就懂了。在公司,你是个严丝合缝的节点。回了家,得切换成软乎乎的长辈。关上门,又变回一串沉默的指针。总以为自己在演不同的戏。其实不过是个底层类,调了不同的成员函数。皮囊会换。根子里的逻辑,早写在出生和长那几行代码里了。但我觉得吧,未必全是写死的。人这东西,迭代几次bug,说不定连底层架构都能重写呢。
当然,也不是哪儿都让我点头。作者对算法效率的执着,有点走火入魔。时间复杂度、空间复杂度,每个字都透着“必须最优”的执念。可生活里哪有那么多最优解?多半是在两个半斤八两的分支里,硬着头皮选一个,然后接着往下趟。代码崩了能回滚,能打断点。日子可倒带不了。我老觉得作者太迷信逻辑的严密性。好像类设计得再健壮,内存清得再干净,程序就死不了机。但人哪是机器?心里的“内存泄漏”,多半是舍不得删掉那些早该扔的执念。总想一口气把逻辑全跑通,却忘了有些烂摊子,本来就得来回迭代。可能作者写代码写惯了,总觉得人生是个可以try-catch的函数。可现实呢?往往连个报错信息都不给你。
敲下最后一行测试代码。终端里终于吐出预期的结果。绿色提示符亮起来那刻,我没觉得多激动。反倒心里踏实了。窗外天全黑透。桌上那团乱线还在那儿,明天估计还得接着捋。但有些东西,确实变了。
代码跑通了。日子还在编译。今晚,先睡个整觉再说。