一、五级层次结构
说明:
1.下层是上层的基础,上层是下层的扩展
2.汇编语言指令和机器语言指令一一对应(先把高级无言翻译成汇编语言)
3.高级语言可以是C/C++、Java;汇编程序可以当作一种助记符;机器语言是一串二进制代码
二、编译型语言与解释型语言的区别
2.1 编译型语言
定义:将高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序(只需翻译一次)。典型的就是它们可以编译后生成.exe文件,之后无需再次编译,直接运行.exe文件即可。
以C语言为例子:
#include "stdio.h"
int main(int argc, char const *argv[])
{
printf("Hello world!\n");
return 0;
}
- 若使用VS code进行编译,则在输出显示中可以看到如下显示:
[Running] cd "c:\Users\林xy666\Desktop\" && gcc test.c -o test && "c:\Users\林xy666\Desktop\"test
Hello world!
[Done] exited with code=0 in 0.208 seconds
可以看到在运行的过程中使用了gcc编译器。
- 若直接使用windows平台进行编译
如下图所示
使用gcc运行test.c文件,会直接生成一个test.exe文件,如下图:
接着就可以直接运行test.exe,而无需再进行编译。如下图:
就可以看到直接输出Hello world!
2.2 解释型语言
定义:将源程序的一条语句翻译成对应于机器语言的语句,并立即执行。紧接着再翻译下一句(每次执行都要翻译),因此效率比较低。在程序运行时才翻译,专门有一个解释器去翻译,每个语句都是执行的时候才翻译。依赖解释器,跨平台性好。
- 以Java为例
首先要下载安装JDK并配置环境变量。代码如下,通过javac.exe编译成.class文件,然后通过jvm加载.class文件。
public class Test{
public static void main(String args[]){
System.out.println("Hello");
}
}
调用java.exe执行文件
2.3 关于java
Java和其他的语言不太一样。因为java针对不同的平台有不同的JVM,实现了跨平台。所以Java语言有一次编译到处运行的说法。
1.你可以说它是编译型的:因为所有的Java代码都是要编译的,.java不经过编译就什么用都没有。
2.你可以说它是解释型的:因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的,那也就算是解释的了。
3.但是,现在的JVM为了效率,都有一些JIT优化。它又会把.class的二进制代码编译为本地的代码直接运行,所以,又是编译的。
虽然java也需要编译,编译成.class文件,但是并不是机器可以识别的语言,而是字节码,最终还是需要 jvm的解释,才能在各个平台执行,这同时也是java跨平台的原因。所以可是说java即是编译型的,也是解释型,但是假如非要归类的话,从概念上的定义,恐怕java应该归到解释型的语言中。
参考链接如下: