代码这东西,你不亲自敲一遍、调几遍,它永远只是屏幕上的死字符。合上《题解及课程设计》那会儿,显示器自己黑了。屋里就剩主机风扇嗡嗡转,跟个漏风的老风扇似的。我往后一仰。啥大道理没悟出来。反倒后脑勺沉甸甸的,跟刚跑完八百米似的。喘匀了气,踏实。这事儿,大概就是这么个意思。脑子空了,手也停了。
刚翻到第一章,眉头就拧成了疙瘩。以前啃这类教材,我图啥?图干货。盼着作者直接把底层逻辑拍脸上,三言两语盘明白。马石安这本《题解及课程设计》倒好,偏不。不急着抛结论。它拿红笔似的语气,把每道题容易踩的坑,标得明明白白。代码行间全塞满了注释,变量咋赋值、函数咋调用,一股脑摊在桌面上。头两天我直撇嘴。这步还用教?结果自己上手,对着一个指针越界,硬熬到凌晨两点。眼睛都糊了,才咂摸出这书的斤两。它不像上课。倒像旁边坐了个抠细节的老师傅。你敲错一个字母,他直接拿镊子给你挑出来。现在人太急了。总觉得教程得像短视频,三秒一个爆点。慢热的,看不下去。我觉得未必是书的问题。是咱们那点耐心,早被算法喂没了。
翻到后面的课程设计,手速慢了下来。五章实例,看着各干各的。实际上呢?MFC编程里最磨人的界面响应、消息映射、数据交互,全给拧成一股绳了。以前我做课设,纯粹混学分。模板一拷,参数一改,交差完事。这次没辙,只能硬着头皮,跟着书里的步骤一行行敲。看着原本空荡荡的窗口,一点点蹦出按钮、菜单,最后能弹个对话框出来回我话。心里那点痒痒劲儿,真压不住。代码哪是冷冰冰的字符?它就是听你使唤的零件。漏掉一行回调,窗口直接卡死;顺手理顺个逻辑,程序跑得比风还快。说白了,这书就是把平时偷懒绕过去的暗桩,全给你排雷了。
书里有个习惯,挺逗。每段参考代码底下,准得跟一句“读者可以根据这些实例进行研究、修改和扩展”。刚开始,我扫一眼就过去了。后来闲得慌,把里头那个文件浏览器的例子扒拉下来,想改成只挑图片格式。一跑。好家伙,直接崩盘。回去死磕原书,才揪出来,是路径过滤那儿漏了个判断。那一瞬间,我真服了。咱们平时学东西,就爱要现成的轮子。谁愿意在半成品里打滚?书里那句“修改和扩展”,根本不是排版凑字数。它就是个坎儿。迈过去,本事才算长在自己身上。绕着走,代码永远姓别人的名。这招挺狠。但也实在。没点耐心,根本跨不过去。硬啃,才是真本事。
写代码,就是个跟玄学报仇的过程。分号少打一个,括号没对上,程序立马给你甩脸色。别指望靠直觉瞎蒙。老老实实开单步调试,盯着变量,一点点挪。这书让我上头的地方,根本不是它塞了多少控件用法。而是它肯陪你磨性子。现在这年头,谁不想三天速成个框架?它倒好,非拉着你从最干巴的语法题开始。把每个红字报错,掰碎了喂给你。不教取巧的法子。就教你怎么把路走实了。当然,你要是已经能闭眼写回调了,翻这书可能觉得啰嗦。但对新手,或者想补基础的人来说,这笨功夫,恰恰是最快的捷径。
屏幕自己灭掉前,我瞥了眼控制台最后一行“Press any key to continue”。手指搁在回车键上,没敢敲。程序跑顺的时候,其实没啥成就感。它就安安静静待在那儿,干完活就撤。道理跟这差不多。书里印得再清楚,没自己踩坑熬过夜,你也当耳旁风。书合上了。明天估计还得跟新bug死磕。不过没关系。今晚这几行字符,总算没跟我较劲。敲完,就翻篇。