具体来说,与解释型语言相比,编译语言如何能够更好地优化硬件?我读过的其他在线资源只给出了模糊的解释,例如因为它是用目标机器的本机代码编写的,而有些甚至根本没有提供解释。鉴于我才刚刚开始编码,如果提供的解释可以尽可能"外行",将不胜感激。
一个主要原因是优化编译器。"提前"编译可以更轻松地将优化应用于代码,尤其是在编译为本机汇编代码时(例如,通常在 C 中执行此操作)。事实上,您知道有关将要部署的计算机的一些内容,这一事实允许您进行特定于计算机的优化。例如,这对于基于奔腾的处理器尤其重要,这些处理器具有许多复杂的指令,这些指令往往需要一定程度的程序结构知识才能使用(例如 MMX 指令集)。
在某些情况下,编译器可以对程序进行结构更改。例如,在特殊情况下,某些编译器可以用循环替换递归。(我曾经听说有人用 C 语言编写了一个递归阶乘函数来学习如何在汇编语言中实现递归,只是他惊恐地意识到编译器已经识别出优化并将他的递归替换为for
循环)。