半夜睡不着,是不是总容易瞎琢磨?屏幕亮得刺眼,红字报错“嗖”地一窜,心口那根弦立马绷得生疼。这时候,谁要再跟你扯什么宏大叙事,我估计能直接摔键盘。要是能递来本不装、不端着的书,安安静静塞给你一把趁手的工具,那才叫真救急。梁力的《程序设计与C语言》,碰巧就是这路数。

刚翻开前两页,我心里其实直打鼓。怕呢。怕又是那种照本宣科的硬骨头。结果人家笔调反倒挺实在。不拽专业词儿,作者就像个蹲在工作台前的老匠人,把C语言的骨架子一个个卸下来,平铺在桌面上让你看。看到“三个层次的例子”那几行,我手指头停住了。第一层抠基础语法。第二层拿典型应用练手。第三层才教综合调试。就这么个顺序。它不急着让你造火箭,先教你把螺丝拧紧。现在好多同类书,恨不得第一章就甩个复杂框架,步子迈得太急,新手哪消化得了?认字,组词,再动笔写文章。步子要是踩岔了,脑瓜子再灵光,也转不出道儿来。

指针那一章,我反反复复啃了两遍。书里原话是这么写的:“指针是地址的别名,弄丢了它,程序就会在内存里漫无目的地游荡。”听着像比喻,等你真在键盘上敲起来,那股子找不着北的慌,才结结实实砸在脸上。有回死磕一个越界错误,眼珠子盯着屏幕干瞪了三个小时。眼皮直打架,火气直往脑门上顶。就在那时候,书里那句“结构化程序设计要求把大问题拆成小模块,一步步验证”,冷不丁撞进脑子里。我天生急性子,总想一步跨到终点,结果全栽在细节里。把大活儿切成小段。先让每一段跑顺了,再往一块儿拼。这理儿敲代码管用,过生活呢?也未必。感情纠纷,或者职场甩锅,你非按流程图去走,显得多不近人情啊。但至少在死磕bug、脑子打结的时候,这招确实能救急。

翻到后半本,书里开始聊怎么从结构化往面向对象上过渡。说实话,头回看这儿我直犯嘀咕。C语言明明是面向过程的,作者干嘛非要扯面向对象?硬着头皮往下翻。才明白。人家是想带咱们看看脑子是怎么换档的。跟人打交道似的。年轻时总认死理,觉得世界非黑即白。年纪稍长,才懂得分寸,看关系,盘全局。代码里多套了个类,多包了一层封装,反倒把逻辑理顺了。我平时处事儿也爱一根筋,碰了南墙才回过味来。有些脾气和疙瘩,真得“封装”一下。不是玩虚的,就是给双方留点喘气的缝儿,让这关系能跑得更踏实。当然,这招未必是万能药。有时候该直球对决,还是得直球。但至少在写代码、处同事关系时,留点余地,确实能少踩不少坑。

当然,这书也不是每页都严丝合缝地贴我心。它死磕语法规则和语义特点,把C语言的严谨劲儿捧得老高。我认这个理儿。代码又不会骗人,标点漏一个,全盘都得崩。可有时候琢磨,作者对“标准答案”那股子较真劲儿,怕是要把新手给吓退。敲代码,本该是野路子里的创造,不是让人在方格子里跳恰恰。话又说回来。没规矩的野性,跑到最后多半是一堆乱码。先练好迈步,再惦记着狂奔,大概就是这个理儿。可能老派作者都这样,觉得基础不牢地动山摇。年轻人嫌慢,可等你自己手滑写崩了项目,自然就懂这种“笨功夫”的含金量了。

把书合上的时候,外头天光都透进来了。屏幕上的代码总算跑顺了。终端里啪嗒跳出那行熟悉的输出。没喊没叫的,就是长长出了一口气。逻辑这东西,看着冷冰冰,却能把人心里那些毛躁的边角,一点点给熨平。咱们总以为是在啃一门硬技术。其实呢。是在跟自个儿的急性子慢慢磨合。往后再碰上那红彤彤的报错字,估计也不至于拍桌子瞪眼了。先瞅瞅分号。再捋捋结构。日子长着呢。慢慢调。