首页 » 算法技术手册 » 算法技术手册全文在线阅读

《算法技术手册》选择一门编程语言

关灯直达底部

在本书中,我们使用了一系列的语言来阐述算法。没有一种算法能够适用所有情况。有的时候,一种特定的语言会简单被经常使用,因为它会使用在一系列的简单的工程中。如果你对算法感兴趣,那么你应该会希望你的实现运行得尽可能快。虽然我们描述了一些实例,这些实例被仔细地进行代码优化,性能上有了可观的改进,但是这种优化或者调整超出了本书的范围。选择一种语言通常依赖于以下因素:

垃圾收集器与手动内存分配

在前面一节我们描述了C程序执行时,数据底层存储方式的细节。使用标准的内存分配函数,大多数C程序员手动地按需分配和回收内存。一个替代的方法是使用Java或者Scheme这些内置了管理分配内存的垃圾收集器的语言。垃圾收集技术发展非常快速,已经存有一些包可供使用,这些包使得即使是C程序也能将垃圾回收器和默认的内存分配模式集成在一起。

字节码解释与编译代码

通常的看法是编译代码每次都能够在性能上比字节码要表现得好。例如,在Java中,Java编译器产生字节码,然后由JVM解释和执行。你应该认真地考虑是否使用像Java那样的语言,来增强代码的可读性,即使可能会导致性能上的损失。

动态与静态类型

静态类型语言增强了类型的规则,使得能够在编译的时候检测到错误,这样能够提高生产率,因为错误能够被迅速发现而不是等到运行的时候才找到。对于强类型函数式语言,例如ML,在函数语言社区,有一个普遍的看法是类型系统可以避免大多数缺陷。动态类型语言经常是解释性的,而且变量的值只有在运行时才能知道,因此不可能被静态地查找出来。很多脚本语言都提供了动态类型。