【发布时间】:2016-10-18 23:27:23
【问题描述】:
对于在计算机上运行的程序,是否必须将代码转换为机器代码才能让 CPU 运行? 这是怎么发生的?
【问题讨论】:
-
这就是它的主要工作方式,但并非总是如此。有时代码不是直接在硬件上运行,而是由另一个程序(解释器)解释,它运行实际的机器代码。
标签: compilation runtime interpreter machine-code
对于在计算机上运行的程序,是否必须将代码转换为机器代码才能让 CPU 运行? 这是怎么发生的?
【问题讨论】:
标签: compilation runtime interpreter machine-code
哇!这需要很多解释。 :D 首先,像人类这样的机器有自己的语言,所以我们可以简单地说,如果你想让计算机按你说的那样工作,你必须用它的语言说出来:)
但您可能听说过编译和解释: 编译:将(程序)转换成可以执行程序的机器码或低级形式。
所以基本上这意味着当程序员决定他们完成编程时,代码代码将被转换为可执行文件之类的其他东西。所以如果你用记事本看一个.exe文件,你不能简单地理解任何东西。并且为windows编译的代码,不能在Mac上执行。
解释:代码将在运行时被另一个程序转换。所以代码在最后几秒钟之前都是人类可读的。就像你在这个页面上右击并选择“查看页面源代码”,你可以看到已经为这个页面生成的 HTML 代码。这意味着代码灵活,可以在不同的机器上运行,就像你看到的那样,你可以在你的 Mac、windows 或不同的浏览器(如 chrome、firefox 或 IE)上看到相同的页面,但它会比编译慢很多。
我们在实践中做什么?
我们将我们的代码编译为一种中间语言,该语言可由特定于每台机器的虚拟机理解。
让我用一个例子来解释它。假设有人想在联合国发表演讲,让我们说中文。
如果他将他所有的演讲翻译成不同的语言并提供给人们,那就是在编译。
如果他说话,有人在网上将他的话翻译成法语、英语等,那就是口译。但这很糟糕,而且你可能找不到任何人为多种语言做这件事
如果他在演讲之前将翻译版本(如英文版)提供给翻译,他们可以在演讲者发言时阅读并用不同的语言说出来,那么这就是我们现在所做的:D
您可以在这里阅读更多内容:Runtime vs Compile time
【讨论】: