力的提高,你才能成为一名职业程序员。打一个比方吧,你会十八般武艺,刀枪
棍棒都很精通,但就是力气不够,所以永远都上不了战场,这个力气对程序员而
言就是逻辑能力(其本质是一个人的数学修养,注意,不是数学知识)。逻辑能力
也是逐步提高的,开始时你一定是用直观的逻辑能力来编程的,怎么想就怎么编
,不对就再改,在改进中提高自己的逻辑能力,从直观逻辑能力提高到抽象逻辑
能力,这是很正常的。提前说一句吧,到达逻辑能力的至高境界,其表现是用数
学语言来描述问题和问题的解决办法,高度抽象!好,说回来吧,你要提高逻辑
能力,最快的办法就是读别人写的结构优秀的程序。优秀的代码是百读不厌的(这
句话是我抄来的),暂时放放对其中某种技术和技巧的关注吧,你要推导和学习的
是这些好程序的逻辑结构,它们是被精心设计出来的。你可以先捂住这个demo程
序,自己设计一个功能相同的程序结构,然后比较一下demo的程序结构,如果差
距较大,那你就不应简单地改进一下,而是要把demo作者设计的过程在心里复原
一遍,做到这一点也许有点困难,但这种事干的多了,你就会越干越快,越来越
得心应手,你的逻辑能力飞速提升,你能看得上的逻辑结构优秀的程序开始不多
了,下一步就是练习。从工作中开始吧,如果你有空闲,你需要做至少两类练习
,一类是算法练习,所有的经典算法都是经典的逻辑,题目有的是,像个好学生
一样吧,每年的国内国际编程竞赛都有逻辑要求非常高的题,你可以只选一两道
难题来做做。当你可以把复杂的单递归程序(只有A调A)变成非递归程序时,已经
不错了,如果你能看得懂双递归程序(A调A、A调B、B调A、B调B都有),我为你鼓
掌!你不必往下看了,我有点不好意思啦――班门弄斧,你快滚蛋吧!另一类是
把以前和当前你工作中你不满意的程序推倒重新设计一遍,这非常重要,省时省
力,因为你熟悉需求,技术上也没问题,目的就是改进程序的逻辑结构,很划算
哦,唯一要克服的就是:你对推翻以前工作中那点小小成就的心理障碍,如果你
真想优秀,说句粗话:这点心理障碍算个屁,一遍遍反复地推倒已有的成果只能
使自己快速进步,放手干吧,没什么好可惜的,马恩早就在《共.产.党宣言》里
说过了:在这个过程中,你失去的只有锁链(禁锢你思想的锁链)。
让我们来总结一下,经过自我否定后,再生的你尽管对过去的“业绩”还有一些
眷恋,但已是一个初步具备职业水准的程序员了,掌握了相应的技术和技巧,具
备了较高的抽象逻辑思维能力,最主要的特征是:能自觉地自我否定,不断地追
求更高水平的逻辑能力。
在这个过程中,如果你能注意以下一些小的方面,你前进的步伐也许会快一些。
l 从编译原理的角度来理解你工作中使用的高级语言,如果你做到这一
点,至少有两个好处,第一个好处是避免一大堆低水平重复出现的编译错误。一
名优秀的Coder平均在一个工作日中应该完成200行以上的源码,其编译错误应该
控制在5个以下,要知道这200行源码不是一次完成的,所以大多数情况下你都要
追求一次编译通过,而一名职业水准的程序员,应该进一步做到即使用purify这
类的工具来检查源码,也不会存在严重的内存泄露。第二个好处是可以提高源码
的可读性和效率。规范地编写你的代码使你自己的逻辑清晰,因为你明白多加几
个括号和空行、多换行对齐、多注释,编译器是会自动识别的,不影响程序执行
的效率,反过来,控制好递归调用和循环内的if语句才是提高程序效率的关键,