在计算机算法或数据结构类经典书籍中,用于算法描述语言的选择有两种情况,一种是选用“伪编程语言”,另外一种是选择C、C++或Java等“真实编程语言”。前者的例子是《
Introduction to Algorithm》,而后者的例子是《
Algorithm in C++》。(当然,有个变态老头用自己臆想的汇编语言来描述算法,居然还成了名著,这不是我们正常人可以讨论的)
采用伪语言,优点是简洁凝练,始终集中于算法本身,不受语言实现相关问题(如内存分配啦,类型系统啦)影响;相应的,其缺点是无法执行,对于读者或受教者来说缺乏直观感受及动手修改的可能。
采用C、C++或Java等“重型”编程语言(Sorry,Java fans!这里我把Java和C,C++相提并论,但它们确实太像了!),其优缺点正好与伪语言截然相反:长于可执行却短于不够简洁明了。
如果说有一种语言能取上述二者之优点并避其所短的话,那么我一定毫无私心地说,那就是Python!(嗯,我前面说过我是一个Pythoner了吧)Python具有类似伪语言的表达能力,同时又足够简单(没有C,C++中的动态内存分配和释放问题,也不受C、C++和Java中类型系统的拖累)。
某不才,想用Python来描述一系列经典的数据结构和算法,算是自娱吧。另外,作为“测试先行”理念的鼓吹者,所有的Unit Test代码也一并附上,至少能最小程度保证代码的可靠性吧。
我主要的参考书是《Algorithm in C++》。(其实我更喜欢《Introduction to Algorithm》,但是那页码也太恐怖了,背上它机动能力会降到0的)
采用伪语言,优点是简洁凝练,始终集中于算法本身,不受语言实现相关问题(如内存分配啦,类型系统啦)影响;相应的,其缺点是无法执行,对于读者或受教者来说缺乏直观感受及动手修改的可能。
采用C、C++或Java等“重型”编程语言(Sorry,Java fans!这里我把Java和C,C++相提并论,但它们确实太像了!),其优缺点正好与伪语言截然相反:长于可执行却短于不够简洁明了。
如果说有一种语言能取上述二者之优点并避其所短的话,那么我一定毫无私心地说,那就是Python!(嗯,我前面说过我是一个Pythoner了吧)Python具有类似伪语言的表达能力,同时又足够简单(没有C,C++中的动态内存分配和释放问题,也不受C、C++和Java中类型系统的拖累)。
某不才,想用Python来描述一系列经典的数据结构和算法,算是自娱吧。另外,作为“测试先行”理念的鼓吹者,所有的Unit Test代码也一并附上,至少能最小程度保证代码的可靠性吧。
我主要的参考书是《Algorithm in C++》。(其实我更喜欢《Introduction to Algorithm》,但是那页码也太恐怖了,背上它机动能力会降到0的)