凌晨两点。数字刚跳过去。光标在空文档里一闪,一闪,跟个坏掉的节拍器似的。满屏红字,扎眼。手指悬在键盘上,敲下去?算了吧。不恼火。也不泄气。就是那根绷了半天的弦,“啪”一下,松了。搞代码的都懂这滋味。对着空气打沙袋。憋屈。折腾大半天,连个能跑的东西都挤不出来。
后来,我蹲在书桌最底层的抽屉里,扒拉半天,摸出这本《C语言程序设计:实验指导·课程设计·习题解答》。高涛老师编的。纸边卷得厉害,跟吃剩的薯片袋似的。封面上“Turbo C++ 2.0”和“Visual C++ 6.0”的字,都快磨没了。就这一眼。好家伙,十几年前那破机房的味道,全涌上来了。主机箱闷出来的热烘烘的塑料味。刚抽出来,心里直犯嘀咕:完了,八成又是一本干巴巴的“工具书”。实验指导、课程设计、习题解答。仨词儿凑一块儿,板正得让人直打哈欠。可你硬着头皮往下翻。翻着翻着,嘿。肩膀不知道啥时候,自己就垮下来了。
排版不整虚的。硬是把编程拆成一块块实打实的砖。配环境。敲“Hello World”。再把零散代码拼起来。步骤列得那叫一个清楚。作者满篇“由浅入深、由易到难”。我起初直翻白眼。教辅书那套陈词滥调,谁没见过?可耐着性子看下去。咂摸咂摸,味儿不对。这书压根没跟你死磕技术。它是在教你,怎么跟“搞不定”这事儿和平共处。咱们学东西,总盼着“顿悟”。啪一下,全通了。做梦呢。现实是,你准会卡壳。准会漏掉个要命的大括号。准会在死循环里干瞪眼。这书不甩标准答案哄你。它逼你。先跑通最糙的实验,再慢慢往课程设计里挪。成长哪来的顿悟。不都是一点点试错,硬磕出来的吗?
书里有一章,专门讲课程设计的导引与范例。页边特意留了一大块空白。明摆着,让你自己画流程图,记笔记。看着那些密密麻麻的注释和调试步骤。我脑子里突然就跳出去年冬天装书架的画面。图纸看着挺明白。真上手,全完蛋。螺丝孔永远差着半毫米。木板歪得跟什么似的。火气当时就窜上来了。锤子差点没扔出去。后来没辙,认怂。坐下来,把说明书又抠了一遍。才想起来,自己图快,把“对齐”那步给省了。这书里的代码,一个德行。它不代劳。就提前把容易踩的坑、容易接错的线,用红笔圈得清清楚楚。编程跟装家具,真是一码事。它不替你动手。就提前把雷区标出来。看明白了。下次敲键盘,手自然就稳当。
不过,这书也不是没毛病。习题解答那部分,答案给得太板正。读着读着,好像编程路上就铺了一条康庄大道。可实际找bug,哪是少敲个括号那么简单?多半是底层逻辑自己就拧巴了。有时候,你严格按书上步骤走。程序照样罢工。那一刻,真怀疑自己脑子是不是没转过弯。但把书一合。回头再瞅代码。你就懂了。报错压根不是冲着你来的。它就是个信号灯。意思就一句:“这儿没对上,再捋捋。”咱们总怕程序崩盘。怕交差的东西露怯。可要是没那些反复折腾的调试。没那些被橡皮擦糊成黑疙瘩的草稿。哪能听见最后那句“Build Succeeded”的脆响?这事儿未必全对。但大方向上,调试本身,就是磨性子。
讲真,我现在早就不碰C语言了。上班以后,框架工具换了一茬又一茬。Turbo C那个灰扑扑的界面,估计早进博物馆吃灰了。但这本旧册子,我还搁在抽屉里,没动。它不教怎么敲出最骚的算法。也不管你怎么应付面试官。它就在角落里杵着。冷不丁提醒你一句:再复杂的大工程,也是靠“试错—改错—再试错”,一天天堆出来的。眼前一团浆糊。怎么敲都跑不通。别硬刚。起身,喝口水。把大麻烦,拆成小碎片。屏幕上的光标,还在一闪一闪。我吸了口长气。把最后一行乱码删了。老老实实,从第一行重来。这回,我不赶着让它跑通。就想看看。这串代码,到底想跟我唠点啥。