有些书,拿来垫桌角刚好。有些书,得拿回去咂摸。曾昭华老师这本《Delphi上机实践指导教程》,刚搁我桌上那阵子,我压根没抱啥指望。封面素得跟凉白开似的,目录排得那叫一个板正。从开发界面扒到语法底子,再往下顺,顺序、选择、循环、数组……一层层码得明明白白。说实话,头一回翻第一章,我困得直打哈欠。大周末的,谁耐烦对着满屏组件面板和事件代码干瞪眼啊?指望一本编程教材给你什么文学性?别逗了。纯属想多了。
可邪门的是,真按着书里的“操作过程”一步步敲,脾气居然被磨平了。Delphi 7 那界面,经典蓝绿搭配。左边组件栏挤得密不透风,右边窗体空落落的。书上原话写的是“所选取的实例典型而又生动”,我起初撇撇嘴,不信。直到我亲手拽个按钮扔进窗体正中,双击,敲下 ShowMessage('你好'),指尖一按运行键。程序跑起来了。屏幕“啪”地蹦出个灰扑扑的简陋对话框。就这一下。我突然品出味儿来了。代码压根不是冷冰冰的字符。它是能听见回音的秩序。你给个指令,它准保还你一个回音。错一分?它都不带含糊的。
书里每段实例后头,都跟着那一套:“实践结果、实践目的、操作过程、实践源代码、程序分析及注意事项”。搁以前,我最烦“注意事项”这仨字。总觉得像班主任在耳边念紧箍咒,烦人。硬着头皮往下读,才咂摸出来,这玩意儿才是整本书的脊梁骨。拿循环结构举例。它专门拎出来一句:“注意循环变量的初始值与终止条件,否则容易陷入死循环”。我愣了下。死循环。这词儿搁书里是语法报错,落到生活里,八成就是那种卡壳的日子。咱们总以为,只要手脚动起来,日子肯定往前滚。可要是方向没摆正,或者条件没设清,闷头使劲,也不过是在原地画圈。一本教写代码的册子,冷不丁就戳中了人心里那些说不清的别扭。
往后翻。尤其是最后一章那五个综合实例,底下小字写着“为学有余力的读者准备”。我瞅见这儿,心里直发毛。“学有余力”听着挺轻巧,上手却像爬陡坡。前头几章,全是手把手教怎么搭积木。到了这儿,突然让你自个儿起房子。我吭哧吭哧折腾了快一周。把前面散落的数组、选择、循环,硬凑在一块儿。报错弹窗蹦得满屏都是。有回逻辑明明没毛病,程序就是装死没动静。后来把代码逐行跟书里的分析对茬,才揪出来是逗号用了中文全角。合上笔记本,往椅背上一靠,喘了口粗气。忽然就懂了。那些综合实例教的哪是什么深奥技术?分明是“打补丁”的本事。日子估计也这么回事。没人递给你一份完整的使用说明书,你只能把以前零零碎碎攒下的本事,笨手笨脚地缝起来,去对付一个接一个的烂摊子。
当然,这书也不是没毛病。它太死磕“标准答案”了。可视化编程确实把门槛踩低了,可有时候也给人灌迷魂汤,好像只要拖拽、点两下,万事大吉。其实真调试起来,满地鸡毛。报错信息往往含糊得像在打太极,你得耐着性子去抠日志、看内存。而不是指望教程给你铺好红地毯。我认它打底子的功劳。但私底下总觉得,它把编程想得太顺溜了。现实里的代码,跟现实里的日子一样,经常得推倒重来。未必次次都能按着书里的剧本走。这点,我持保留态度。
如今,那本旧教程早合上了。Delphi 的界面我也久没碰了。可每当脑子一团浆糊,我还是会想起书里那句干巴巴的“注意事项”。程序会罢工。人也会。但好在,只要光标还在闪,总能摸到那个漏掉的分号,或者按下下一次运行的按钮。窗外的天黑透了。键盘缝里的灰在灯底下浮沉。我其实还在学。只是换了个辙。