编译器与解释器的简化解释
代码种类
- 机器码:是可以直接让cpu执行的
- 字节码:通常指的是已经经过编译,需要解释器翻译后才能成为机器码的中间代码. 如Java字节码
- 源代码:是高级语言编写的代码(对人是可读的)
编译工作流程
- 编译阶段:从源代码编译成机器码,然后直接运行输出
- 运行阶段:不需要编译器了。只需要直接运行生成的机器码。
特点:高效,但是不能跨平台。因为,机器码是与操作系统平台对应的。不能通用。一般,需要在不同的平台上(或者指定平台编译),进行,编译。所用的编译器,也是因为平台而有所差异。代表语言:C、C++、go……
解释工作流程
- 编译阶段:无
- 运行阶段:需要解释器,一边把源码翻译成机器码,一边进行机器码的运行。
特点:低效,跨平台。因为,给每个平台定制编译器就可以了。然后,一份代码可以,在多个平台运行。代表语言:python、ruby、php……
半编译型半解释型语言
代表语言:java
- 编译阶段:java源代码先编译成字节码.class文件
- 运行阶段:然后在不同平台上,通过jvm虚拟机运行代码
特点:高效,跨平台。