刚学点新东西,谁没个手忙脚乱还死撑场面的时候?头回拧螺丝拧滑丝,或者盯着IDE里满屏红字报错干瞪眼,太正常了。说真的,当初翻开《Java SE 6从入门到精通》,我压根没抱啥指望。这书厚得离谱,封面素得掉渣,目录排得那叫一个规整,透着一股“照着敲绝对能跑”的迷之自信。我以为打开就是满纸干巴巴的语法和API,啃它估计得脱层皮。毕竟市面上这套路子书,十本有八本买回来最后都默默当了键盘垫板,真能啃下去的,寥寥无几。
头几章,概述、语法、流程控制,一股脑儿砸过来,确实挺催眠。变量、循环、条件判断。一行行码得端端正正,跟冷冰冰的积木似的。我翻着翻着就在心里犯嘀咕:死规矩堆一块儿,真能拼出点活气儿来?直到第13章,那个“办公固定资产管理系统”一出来,事儿才透亮。作者拿这玩意儿把前面散落的知识点全串起来了。道理其实特朴素:写代码不是背口诀,是盖房子。光看砖头有啥用?你得知道哪块承重,哪块只是贴面。顺序一乱,墙立马塌。
第6章到第12章,GUI界面、异常处理、I/O流、多线程、数据库。单拎出来看,跟市面上任何一本技术手册的目录都差不多。可一旦放进系统开发的实际流程里,它们立马就变了味,成了砖头、水管、承重墙。我翻到异常处理那节,手指头搁键盘上愣是没动。书里拿一大段代码死磕怎么抓错,怎么让程序崩盘前能喘口气。看着看着,脑子里突然就冒出个念头:这不就是过日子吗?计划赶不上变化,指望落空,冷不丁就出点岔子。谁不盼着一切按“主流程”顺顺当当走?可现实偏偏最爱抛未捕获的异常。书里让你敲 try-catch,我觉得真不是什么高深哲学。说白了,就是教人一种活法:允许搞砸,赶紧找补救,然后接着往下过。代码里catch完还能跑,生活里有些错呢?可能连catch都兜不住,只能硬扛着,慢慢消化。
有一说一,有些边角料我当时根本没嚼烂。多线程同步怎么扯皮,泛型类型擦除到底是个啥,头遍看过去,满屏英文字母配花括号,脑仁儿直接打结。后来没办法,硬着头皮又翻了两遍资料。甚至对着第87页那个死锁例子,熬了整整三个晚上,才勉强摸出点门道。学东西大概就这样,哪有什么瞬间开窍的戏码?全是一口一口嚼碎了,才咂摸出点味儿。书里老挂嘴边“案例驱动”,我倒觉得,真推着我往前走的,是看着干巴巴的逻辑一点点长出血肉的过程。等数据库里的资产数据终于在界面上能增删改查,等Socket网络编程让两台电脑真正能互相“传话”,那种踏实劲儿,什么大道理都替不了。它不咋呼,就闷声告诉你:你亲手捣鼓出来的玩意儿,是能转起来的。
不过,这书也有它的死板处。它搭出来的世界,太干净了。输入肯定有输出,异常也总能抓住。系统一旦跑通,那就稳稳当当的。可真正上手的项目呢?或者说真实的日子,哪能全是严丝合缝的闭环?需求说变就变,环境慢慢老化,人也会犯乏。书里对“维护”和“妥协”只字未提,光盯着“实现”猛干。这让我看清了一件事:技术可以死磕精确,但办事的学问,往往得留条活路。代码能推倒重来,日子得一天天地熬。有时候,凑合着跑个带点bug的状态,比死盯着零报错靠谱多了。毕竟在甲方和上线死线面前,完美主义通常死得最快。能跑起来的半成品,才是真爹。
书皮合上的时候,屏幕上的光标还在一格一格地闪。我忽然觉得,敲代码和过日子,压根是一码事。都是把一堆乱糟糟的素材,一点点理顺,搭成能用的架子。不指望永远不报错,就盼着每次掉链子,都知道该拿什么去兜着。外头风有点凉,心里那块石头总算落了地。至于能不能真正精通?未必。慢慢来吧,路还长着呢。