一直以来都没有正正经经的读过一本关于算法的书,只因为当初老师说过,“算法前人都写好了,你就拿来用好了”,以至于我对算法的理解还一直停留在“排序”的层次,现在想来惭愧不已。
不错,经典的算法几乎所有流行的编程语言都有现成的实现,供我等应用开发人员直接使用。而且,若要想在盛行DRY的氛围下,尝试从头再来一次的话,所要承受舆论的压力不可小视。
但算法就仅仅只是指“快速排序”、“八皇后”吗?不是,算法是思想,比方说《算法导论》中开篇就以排序而引入的“分治—合并”的思想。算法也是规律,因为我们总是让计算机重复再重复着它解决同样一类问题。
从实用的角度看,算法的确没有必要再实现一边,毕竟那是浪费时间。可是,理解算法的最佳实践莫过于是再实现一边它。这不禁让我联想到,开源社区中处处都会听到DRY的呼喊,然而每天还是会有重复的新项目出现,可细想之下,我发现很多耳熟能详的项目都是在重复中诞生,在理解中升华的。
因此,我要重新认识算法,不是为了那天能够把书上的代码copy到IDE中复用,而是要在它的基础上创造新的算法。