--- title: Compiled Versus Interpreted Languages localeTitle: 编译与解释语言 --- ## 编译与解释语言 每个程序都是一组指令,无论是添加两个数字还是通过互联网发送请求。编译器和解释器采用人类可读的代码并将其转换为计算机可读的机器代码。在编译语言中,目标机器直接翻译程序。在解释语言中,源代码不是由目标机器直接翻译的。相反,一个_不同的_程序,即解释器,读取和执行代码。 ### 好吧,但是是什么_实际上_意味着? 所以,假设你有一个想要制作的鹰嘴豆泥配方,但它是古希腊语。作为一名非古希腊语的演讲者,你有两种方式可以遵循它的指示。 首先是如果有人已经为你翻译成英文。你(以及任何能说英语的人)可以获得英文版本并制作鹰嘴豆泥。这是编译版本。 第二个是如果你有一个认识古希腊的朋友。你的朋友可以坐在你身边,随时随地将古希腊语翻译成英语。在这种情况下,您的朋友是翻译。这是解释版本。 ### 编译语言 编译语言直接转换为处理器可以执行的机器代码。因此,与解释语言相比,它们的执行速度更快,效率更高。它们还使开发人员能够更好地控制硬件方面,例如内存管理和CPU使用率。 编译语言需要“构建”步骤 - 它们需要首先手动编译。每次需要进行更改时,都需要“重建”程序。在我们的鹰嘴豆泥示例中,整个翻译都是在它发送给您之前编写的。如果原作者决定使用不同种类的橄榄油,整个食谱需要再次翻译然后发送给您。 纯编译语言的示例是C,C ++,Erlang,Haskell,Rust和Go。 ### 口译语言 解释器将逐行运行程序并执行每个命令。现在,如果作者认为他想要使用不同种类的橄榄油,他可以将旧的橄榄油​​刮掉并添加新的橄榄油。然后,您的翻译朋友可以随时向您传达这一变化。 曾经知道,解释语言比编译语言慢得多。但是,随着[即时编译的发展](https://guide.freecodecamp.org/computer-science/just-in-time-compilation) ,这种差距正在缩小。 常见解释语言的示例是PHP,Ruby,Python和JavaScript。 ### 一个小警告 大多数编程语言都可以具有编译和解释的实现。语言本身不一定是编译或解释的。然而,为简单起见,它们通常被称为这样。 严格地说,术语解释语言和编译语言没有很好地定义,因为理论上,任何编程语言都可以被解释或编译。在现代编程语言实现中,平台提供这两种选项越来越受欢迎。 例如,Python既可以作为编译程序执行,也可以作为交互模式下的解释语言执行。 **理论上,大多数命令行工具,CLI和shell都可以归类为解释语言。** ### 的优点和缺点 #### 编译语言的优点 由于翻译过程的开销,在编译时编译为本机代码的程序通常比在运行时翻译的程序更快。 #### 编译语言的缺点 最显着的缺点是: - * 在测试之前完成整个编译步骤所需的额外时间,以及 * 生成的二进制代码的平台依赖性。 #### 口译语言的优点 解释语言为实现提供了一些比编译实现更多的灵活性。因为解释器本身执行源程序代码,所以代码本身与平台无关(例如,Java的字节代码)。其他功能包括动态类型和较小的可执行程序大小。 #### 口译语言的缺点 与编译语言相比,最显着的缺点是典型的执行速度。 #### 更多信息: [维基百科 - 编译语言](https://en.wikipedia.org/wiki/Compiled_language) [维基百科 - 口译语言](https://en.wikipedia.org/wiki/Interpreted_language) [programmerinterview.com文章 - 编译语言和解释语言有什么区别?](http://www.programmerinterview.com/index.php/general-miscellaneous/whats-the-difference-between-a-compiled-and-an-interpreted-language/)