有些东西,非得自己上手捏一把,才知道是轻是重。我指的不是别的,就是那种厚得能当镇纸砸脚面的编程教材。还有大半夜盯着屏幕,硬熬编译进度条一点点往前挪的那几十秒。咖啡凉了第三回。进度条才蹭到99%。那种又盼又怕的滋味,搞过开发的,谁不懂?
刚摸到《Delphi语言程序设计实例教程》这本硬壳书的时候,我心里直打鼓。名字起得毫不客气。翻开里头,属性、方法、事件,BDE和ADO那一套连接配置,写得明明白白,妥妥的应试风。封面上“全国计算机等级考试二级大纲”八个字,晃得人眼晕。我原以为,这就是一本应付考试、或者给零基础新手铺路的工具书。随便瞅两眼,翻篇得了。结果你猜怎么着?真耐着性子,一行一行跟着敲代码,手里的键盘突然就不烫手了。节奏,自己就顺了。不过得说句实在话,这书可能真不适合急着出活儿的人。想搞花哨界面?赶项目deadline?翻它,估计能急出内火。但只要你愿意慢下来,顺着它的脾气走,它还真能带你把底层逻辑摸得透透的。
这书太“轴”了。Delphi画图,就是拖拽。按钮、文本框、列表框,从工具箱拽到窗体上,再去属性栏里死磕每一个设置。听着轻巧?可你只要漏绑一个事件,程序跑起来就跟死了一样,按啥都没反应。书里抠得真细。细到逼着你把手速降下来。有回我照着例子搭数据库,属性栏填得严丝合缝,一跑起来,好家伙,蹦出一堆乱码报错。火气蹭地冒上来。噼里啪啦删了重写。折腾好几遍,最后只好把书摊在键盘旁边,逐字核对连接字符串。就一个多出来的空格,在捣鬼。那一刻,脸上有点挂不住。咱们平时干活儿,是不是也总爱抄近道要结果?连最基础的“空格”,都懒得拿放大镜照一照?现在这环境,谁还愿意花二十分钟查一个字符?多半是Ctrl+C、Ctrl+V完事儿,崩了就重启。可这书偏不惯着你。
书里大段大段地讲组件和事件。按钮点一下,触发OnClick;键盘敲下,走OnKeyPress;列表框换项,是OnChange……每个动作都有它的触发开关,每个反馈都得走正经的处理流程。Object Pascal这门语言,也挺实在。不带你玩虚的炫技,就认死理:严谨。翻到数据库那几章,我脑子里突然冒出一个挺扯的念头:咱们跟现实世界的打交道,是不是也得这么“按规矩出牌”?很多时候,咱们自以为在高效推进项目、用心经营关系。其实回头一看,不是漏听了关键的事件,就是把数据源的路径指岔了。书里压根不灌鸡汤。就老实巴交地告诉你:BDE怎么配,ADO怎么连,字段类型怎么对齐,事务处理怎么回滚。可你把这些零件拆开琢磨,生活里那些莫名其妙掉链子的时刻,多半也是同一个毛病——总想着跳过底层逻辑,直接调上层接口。当然,人毕竟不是代码。生活里,哪有那么多严丝合缝的try...catch?但偶尔用这套逻辑复盘一下,未必不是个清醒的法子。
话得说回来,这书确实有年头了。2007年的考试大纲摆在那儿。不少技术栈早就退居二线,Delphi本身也没再站在风口上。可你读它,反倒觉得心里踏实。它不跟你扯什么“赋能”“沉淀”,也不画什么宏大架构的大饼。它就盯着你问:这组件属性设妥帖了吗?这循环边界条件写全了吗?这种死脑筋的实在劲儿,在这帮天天喊“快速迭代”的圈子里,反倒有点稀缺。行吧,道理听着不新鲜。真能沉下心来把属性一个个对齐、把缩进一行行理顺,本身就得掉层皮。有时候咱死磕,到底是真热爱,还是单纯的不甘心?书里的代码可不管这些。它只管闷头跑。不过话说回来,指望靠一本老书就能在现在这技术圈里混得风生水起,那多半是想多了。它给不了你风口上的红利。只给你一套笨拙但扎实的底层思维。这大概算是它最大的局限,也是最实在的地方。
把书合上的时候,屏幕底下的编译窗口终于蹦出“Success”。没欢呼,也没跺脚。就是肩膀一松,长长吐了口浊气。以后我还碰不碰Delphi,真说不准。按部就班敲代码的日子,还能不能坚持下去,也是个未知数。但那种把散架的零件一个个归位,看着它们顺着预设的轨道安静转起来的滋味,估计能记挺久。咱们老觉得自己在拼命往前赶。其实有时候,也就是缺那么点把零碎东西拼对的时间罢了。哪天要是真觉得心里乱了,翻出来看看。或者就着这书发会儿呆,也挺好。