【问题标题】:Why only C and C++ code is converted directly to exe, whereas Python and Java require external converters to do that after compilation? [closed]为什么只有 C 和 C++ 代码直接转换为 exe,而 Python 和 Java 需要外部转换器在编译后执行? [关闭]
【发布时间】:2020-08-22 23:52:07
【问题描述】:

只有 C 和 C++ 转换为 exe 的编译级别会发生什么?所有应用程序都必须是exe才能在windows上运行,为什么这些语言没有包含编译后生成exe文件的功能?

【问题讨论】:

  • 因为它们旨在运行在许多不同的操作系统上,而不仅仅是 Windows。
  • 查找 WORA(一次编写,随处运行)。为每个操作系统制作不同的可执行文件很痛苦,因此 Java 和 Python(以及其他语言)只有一个解释程序的 VM。
  • 这能回答你的问题吗? Compiled vs. Interpreted Languages
  • 没有理由不能编写 C++ 解释器,这可能不是一个好主意,但它肯定是可能的。同样,完全有可能编写一个输出可执行代码的 Java/Python 编译器

标签: java python c++ c


【解决方案1】:

C、C++ 和 Java 是 compiled languages,这意味着它们的代码通过 compiler 运行,它获取您的代码并将其转换为二进制指令。对于 C 和 C++,这些指令采用计算机可以直接理解的格式,在 Windows 中存储在 .exe 文件中。

Java 稍微复杂一些,因为代码是为JVM 编译并在其中运行,而不是直接在您的计算机中运行。这就是为什么没有.exe。不过,您可以使用软件打包程序以从 .exe 运行。

另一方面,Python 是Interpreted Language,您的代码通过一个名为Interpreter 的程序运行。解释器逐行运行您的代码,这意味着您的整个程序绝不会转换为指令,您所需要的只是一个包含 Python 代码的文件。与 Java 一样,您可以制作一个包含您的代码的包,并在 .exe 中对其进行解释。

正如 Julien Thierry 已经提到的,还有许多其他编译和解释语言的示例(以及我可能不知道的其他类型)。

【讨论】:

    【解决方案2】:

    不仅 C 和 C++ 可以编译为本机可执行文件。

    您可以在此处阅读更多信息:https://en.wikipedia.org/wiki/Compiled_language 有一个编译的其他语言列表(那些没有“到字节码”的应该是那些不需要“外部转换器”(称为解释器)的语言。

    没有什么“神奇”的东西可以让 C++ 和 C 能够做到这一点,而其他语言则不能。这是一个设计的选择。编译后的 C 或 C++ 语言只能在一个目标(特定 cpu 架构和操作系统)上运行,而用 python 或 Java 编写的程序可以在任何具有解释器的平台上运行。

    【讨论】:

    • 但是我们看到基于Java的应用程序是exe格式的,那么是不是转换成C、C++的形式呢?此外,基于 C、C++ 的应用程序能够在不同的系统和架构上运行而无需再次重新编译(例如视频游戏),那是如何发生的呢?
    • @AquibShaikh 虽然您可以将 Java 编译为 exe,但 exe java 应用程序通常只是一个小型便利程序,它调用安装在计算机上的现有 JVM。这使得典型用户更容易使用。有些更强大,并且在 exe 中内置了特定或自定义的 JVM。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 2021-03-19
    相关资源
    最近更新 更多