其实学习算法有两个好处:直接的和间接的.
直接的好处就是将学到的算法使用在工作中.而间接的,就没有定论了,我觉得是能够提升思维能力.
这两个好处中,我觉得提升思维能力更重要.说到底算法还是比较基础的东西.而越基础的东西,越是难以直观地评价它的价值.但是,正是由于它是基础的,其投资回报率其实更高.比如LZ所说的高层设计,也会因思维能力的提升而获益.另外,就算法本身而言,我觉得学习算法的主要目的是具备设计新算法的能力,而不是使用已有的算法.因为,人们很难预测将来的需求,只为现有需求付出努力回报率是不高的.因此学习算法的重要好处是:能够为将来未知的需求作好准备.
总之,我的体会是:算法的实际价值总是比我们所估计地要高得多.
当然,也没有必要因此就非算法不行.总体而言,它和其他基础的东西一样,是高投入高回报率的科目,但是并不是所有人都必须投入它.是否要花精力学习它,要学到什么程度,对每个人来说答案都是不同的.就象LZ所说,工作中直接遇到算法难题的情况平均而言是不多的.所以,也不必被算法的美好前景所诱惑.最好是根据自己的目标和实际情况,做最优选择.而一旦选择的学习算法,就必须下定决心做巨大的付出.
就我个人而言,工作中是经常要碰到算法的;但是遇到难题的情况很少,大多数情况下,具备普通的能力就可以了.
目前,我正在学习TAOCP,学习的主要目的是提高算法设计能力(而不是应付现有的工作).但是,我发现自己的数学基础还是有些薄弱(基础以前没打好,后悔啊),所以现在正在看Concrete Mathematics.(欢迎与我讨论这两本书上的内容,呵呵) |