之前已经学习完第一章,现在开始学习第二章,《程序的灵魂--算法》。现在就从第二章的总论开始学习。以下是我的心得。
1、最让我惊讶的,是谭师傅居然把Niklaus Wirth的名写成了Nikiklaus。牵狗查了一下,有“Nikiklaus Wirth”字样的还不少,都是中文网站,有课件也有文章。不禁让我想起《蜘蛛侠》中的一句台词:“With great power, comes great responsibility”。谭师傅好歹也算是个名人,要注意一下影响。
2、不光是名字,谭师傅把那句名言也整反了。人家说的明明是“算法+数据结构=程序“,谭师傅一下就整成了”数据结构+算法=程序“。虽然说加法有交换律,不过呢,这可不是一个公式,而是一本书的名字。还是那句话,要注意一下影响。
3、谭师傅把数据结构比作食材,把算法比作烹饪的步骤,把算法提高到“灵魂”的高度,而认为“数据结构”只是“加工对象”。虽然没有明说,但给人的印象确实是“算法就是一切”,而数据结构则成了固定、死板、不需要太费心的东西。看到这里,我除了叹气以外也无话可说。算法与数据结构从来都是相辅相成,必需同时设计。一个好的数据结构能够极大的简化算法,并且让程序更容易读懂,更容易维护。这也正是为什么说“算法+数据结构=程序“的原因。这本来是任何一个合格的软件工程师都应该明白的东西。难怪网上有人劝谭师傅先自己试着做做软件开发再来写书。
4、本来算法和数据结构是独立于具体的编程语言、环境的(即同一个算法或数据结构可以用不同的语言实现)。也正是因为这样,算法、数据结构以至于算法复杂度等等概念才有研究的必要。在特殊情况下,某种语言甚至可以看成是专门为了某种算法和数据结构才被发明的。谭师傅这本书本来是讲C语言的,为什么不能专注于C语言呢?讲自己不擅长的东西也是对读者不负责。从整第二章来看,谭师傅眼中的“算法”,大概也就是先做A,再做B,如果C成立再回头做A之类的东西,还处于社会主义初级阶段。同学们可千万要记住了,“革命尚未成功,同志仍須努力“。
好了,概论就学习到这里。下次仔细分析谭师傅的算法。
2009年3月24日 at 1:35 pm
“With great power comes with great responsibility”
后一个 with 似乎多余。:-)
说得对,是我记错了。