Ada*_*zyk 6 java compiler-theory compilation
我的理解是这样的,定义:
翻译 - 使用某种语言编写代码,使用其他语言生成代码.
Compilaton - 翻译成机器代码.
机器代码 - CPU的直接指令.
现在,来自docs.oracle.com:
javac - Java编程语言编译器
编译器...?我认为它是Java 转换器,因为它生成的代码不是机器代码.字节码需要解释器(JVM)才能运行,因此它定义为不是机器代码.
来自维基百科:
Java应用程序通常编译为字节码
同样.根据定义,我会说Java被转换为字节码.互联网上还有更多的例子,我认为存在混淆,或者我只是遗漏了一些东西.
你能澄清一下吗? 翻译和编译有什么区别?
它的定义,所有的问题,而且有什么"汇编"的手段没有单一的公认的定义.在你看来,编译正在将某种语言的源代码转换为原生代码; 因此,不生成机器代码的转换过程不应称为"编译".在我看来(显然,javac文档编写者的眼睛也是这样),它应该.
实际上有很多不同的术语:翻译,编译,反编译,汇编,反汇编等.
就个人而言,我认为在"编译"下对所有这些术语进行分组是有意义的,因为所有这些过程都有很多共同之处:
javac和本地编译器的内脏,它们相对相似.此外,您对"生成本机代码"的定义存在问题:
但这些只是我的意见.我认为,那里最常见的定义是:
根据这些定义,javac绝对可以被视为编译器.但同样,这些都在定义中:从技术角度来看,许多这些行动都有很多共同之处.
javac的结果是机器码.机器是虚拟的而不是物理的这一事实并不重要(否则,您可能会认为,如果您是Mac用户,则编译x86中的代码是翻译,因为x86代码不是Mac机器代码).