CPU能理解编程语言吗?

时间:2012-08-03 10:54:28

标签: compiler-construction cpu

编程书籍有时会指出CPU不理解C ++语言(或任何高级编程语言)。所有C ++语句必须先转换为机器代码才能执行。但谁做翻译?

哦,他们说,这并不神秘;翻译由编译器完成 - 编译器本身就是一个计算机程序。但在这种情况下,计算机正在进行翻译。

在我看来这是一个无法解决的悖论。 CPU(计算机核心的“大脑”)不理解C ++这个词,但它执行C ++和它自己的内部语言之间的转换。这不是一个矛盾吗?

1 个答案:

答案 0 :(得分:13)

答案的很大一部分是:C ++源代码(或任何高级编程语言)存储在文本文件中,就像您可以存储论文或备忘录一样。但文本字符以数字形式存储。因此,当编译器处理这些数据时,它正在进行另一种形式的数字运算,评估数据并根据精确的规则做出决策。

如果不清楚的话,想象一下:你的任务是阅读一个懂日语但没有英语的人的来信。与此同时,你懂英语而不是日语。

但是假设你有一本说明书,告诉你如何将日文字符翻译成他们的英语等值。说明书本身是用英文写的,所以你使用它没有问题。

所以,即使您不懂日语,也可以通过仔细按照说明翻译您想要的所有日语。

这就是计算机程序的真正含义:CPU读取的指令书。计算机程序是一种惰性的东西 - 一系列指令和数据 - 但计算机内部的“知识”源于其程序。程序使计算机能够做各种聪明的事情 - 包括翻译包含C ++的文本文件。

编译器当然是一个非常特殊的程序,但它的作用并不奇怪或不可能。作为一个计算机程序,它是一个“说明书”,如上所述。它告诉你该怎么做是读取包含C ++源代码的文本文件并输出另一条指令 book:此输出是可执行形式的C ++程序。

最初的编译器必须用机器代码编写。后来,旧的编译器可以用来编写新的编译器......因此,通过一个自举过程,即使是熟练的程序员也可以依赖于编写机器代码越来越少。