凌晨两点。后颈早就僵了,台灯烤得人发慌。手边的速溶咖啡凉透,结了一层膜。屏幕中间突然跳出那串红字 NullPointerException。我盯着它,半天没动。图啥呢?非让那台死脑筋的机器听人话?还是就为了在冷冰冰的字符堆里,硬抠出个能跑起来的小玩意儿?挺轴。也没辙。

这本《Java语言教程设计案例教程》,是下班路上脑子一热带回来的。没别的目的,就想学个能糊口的本事。翻开前,我连死磕语法、狂背定义的心理建设都做好了。结果呢?目录一翻,路子不对。作者不整那些虚头巴脑的概念轰炸。直接拎个完整项目当引子。从最基础的快速上手,一路拽着你往数据库和图形界面里钻。十章啃完,跟搭积木一样,严丝合缝。肩膀上那块铁板,不知不觉就塌了。

翻到“类与对象”那章,手指头愣是停住了。拿图纸和盖房打比方。类是图纸,对象是盖好的房。话直给,不绕弯子。抽象的逻辑,一下踩实了。写代码,跟搭灶台过日子真是一个理儿。先画草图,再一块砖一块瓦地垒。以前听着头疼的“封装、继承、多态”,被拆成搬砖砌墙的动作后,顺眼多了。我开窍是晚了点。以前总想一步登天。现在懂了。地基打不牢,楼盖不高。

调试那几天,真搞心态。流程控制套了好几层。缩进长得快把屏幕撑爆。眼睛贴屏幕上,死找那个漏掉的花括号。讲到接口,概念在脑子里打转。屏幕上的红字,越看越气人。好在书不玩虚的。案例直接拽着你上手跑。最后一个按钮“啪”一下弹出窗口。踏实。那种踏实劲儿,比刷一百条鸡汤管用。耐心不是硬憋出来的。是看着东西一点点成型,自己从骨头缝里渗出来的。

后来啃输入输出流和数据库,脑子里突然蹦出上次收拾储藏室的画面。数据流,像搬箱子。数据库,就是贴标签、归架子。人心里那些乱七八糟的碎事儿,零散的记忆,不也缺个地方倒腾、缺个架子搁吗?书里明明白白教怎么存取数据。翻着翻着,咂摸出点味儿来了。人对“条理”的执念。人天生就讨厌无序。没个索引,日子过得真累。

话得说回来,这书也有翻车的地方。为了迁就新手,现实开发里的坑,被抹得太平。边界条件怎么卡?异常怎么处理?性能怎么掉?它没细抠。但这反而显得实在。不装高深。不画大饼说几天能入行。就老老实实交代:你看,先这么搭,再那么调,一步步来。这种不端着的劲儿,让人愿意往下翻。当然,这书没法面面俱到。真要进大厂干活,光看它肯定不够。生产环境里的坑,没书上那么平整。但作为入门敲门砖,没毛病。

书合上的时候,窗外已经泛白。屏幕上的光标,还在闪。我没打算转行当程序员。但总算摸到点门道。不管是敲代码,还是对付生活里那一团乱麻。拆开。揉碎。一步步往前挪。事儿总能理出个头绪。急也没用。反正急不来。

行了。先歇着。明天醒了,继续敲。