【发布时间】:2017-06-28 13:34:36
【问题描述】:
**解释是否在执行 pgm 期间遵循编译阶段?**简单地说,当我们运行程序时会发生什么?如果这些是不同的事情,那么在解释之前将执行语法检查。正如我所读 python 是解释语言然后检查语句是由什么完成的?
【问题讨论】:
标签: compilation interpreter compile-time execution-time pythoninterpreter
**解释是否在执行 pgm 期间遵循编译阶段?**简单地说,当我们运行程序时会发生什么?如果这些是不同的事情,那么在解释之前将执行语法检查。正如我所读 python 是解释语言然后检查语句是由什么完成的?
【问题讨论】:
标签: compilation interpreter compile-time execution-time pythoninterpreter
你有两个选择:
在编译语言中,您需要一个编译器,它可以获取源代码作为输入并生成一个二进制作为输出,可以在给定的目标平台上运行。例如,C、C++ 或 Java 是编译语言。在编译器生成 binary 之后,您在目标平台上执行该 binary。生成二进制文件的编译过程涉及的主要步骤是词法、句法和语义分析以及代码生成。
编译器是在本机平台上运行并为给定目标平台生成代码的程序(二进制)。你有两个选择:
* target_platform == native_platform (native-compiler)
* target_platform != native_platform (cross-compiler).
如果您有一台 x86_64 台式电脑,您的编译器在 x86_64 上运行并生成在 x86_64 上运行的代码,那么您就有了本机编译器。在这种情况下,编译器会生成本机机器代码。
如果您有一台 x86_64 台式电脑,您的编译器在 x86_64 上运行并生成在不同平台(例如 JVM)上运行的代码,那么您就有了一个交叉编译器。您应该了解 Java 语言使用一个交叉编译器,该交叉编译器将 java 语言作为输入,并生成在 JVM(而不是 x86_64 机器上)上运行的字节码作为输出。
其他交叉编译器,如 arm-linux-gcc、mips-linux-gcc、ppc-linux-gcc 等,获取 C 源代码作为输入并生成二进制文件以在适当的目标平台(ARM、MIPS , PPC)。
在解释语言中,您不需要编译器来生成代码,因此在进程结束时不会生成二进制文件。 bash 和 python 是解释型语言。语言的解释器(安装在您的 PC 中的二进制文件,例如 /bin/bash 或 /usr/bin/python)接收输入源代码,对其进行解释并执行它以生成输出。解释源代码所遵循的步骤与编译器所遵循的步骤完全相同,只是解释器不生成代码,只是在分析后执行。
我前段时间写了一篇文章,解释了如何使用 python 编写自定义语言的解释器。这篇文章是用西班牙语写的,但是整个过程是一步一步解释的,所以如果你对它感兴趣的话,可以学到很多东西。在文章的最后你可以找到源代码来下载和测试。源代码可在 github 中找到。该文章可在此link
希望对您有所帮助! :)
【讨论】: