编译语言和解释语言的相对优劣如何?
编译语言和解释语言的相对优劣如何?
两种方法在优劣方面都没有明显的优势 - 如果一种方法总是更好,那么我们很可能会到处使用它!
总体而言,编译器具有以下优点:
因为编译器可以一次性看到所有代码,所以在生成代码时可以执行许多分析和优化,使最终版本的代码比单独解释每行代码更快地执行。
编译器通常可以生成低级别的代码来执行高级别的想法,例如内存查找表中的“动态调度”或“继承”。这意味着生成的程序需要记住关于原始代码较少的信息,从而降低了生成程序的内存使用率。
总体而言,编译器具有以下缺点:
总体而言,解释器具有以下优点:
因为解释器可以按照编写的方式读取代码,而且不必执行生成或优化代码的昂贵操作,所以它们通常比编译器更快地启动。
因为解释器可以看到程序运行时的情况,所以解释器可以使用许多编译器可能无法看到的动态优化。
总体而言,解释器具有以下缺点:
解释器通常具有比编译器更高的内存使用率,因为解释器需要在运行时保留有关程序的更多信息。
解释器通常会在解释器的代码内部花费一些CPU时间,这可能会减慢正在运行的程序。
因为启动时间更短,而且可以直接读取解释器程序,这对我来说是一个明智的选择。