数据结构的书中有这样的描述,程序=算法+数据结构。我不同意这样的观点。这样的观点也不知误导了多少的初学者。软件开发再不断的发展,这样的论调早已过时,但还在编程界不断的相传。不知是书本的悲哀还是“高手”的悲哀。


我们不断的强调算法的对程序的重要性,通过对算法的熟练度来看一个人编程水平的高低。就像现在都在说的奥数一样,获奖的中国同学有几个真正从事数学研究的,并且在数学上有成就的。就像有道编程大赛一样,有人不段的做这样的题,去练习,那就有很大的机会过关,获奖。但真正会有多少算法需要让我们去研究,去实现。很多算法都非成熟,我们不断的在重复的做着,有意义吗。

举个例子:最短路径,算法早已相当成熟。对于一个没有学过的人来说,让他去做这样的算法真的很难。但当告诉他算法的原理后,就会有“原来是这样呀”的感慨。我们在实际的工作中,很多情况下是在用别人的算法,而不是自己在创造新的算法。程序员需要提高的是解决问题的办法和对问题的抽象,而不是对算法的熟练程度。所以,练习可以,但不能把它太当回事。