编译型语言 vs 解释性语言 vs 编译解释语言
计算机只能识别机器码,所以任何语言的源代码,最终都被编译/解释二进制的机器码,让计算机识别运行。解释性语言和编译型语言的不同关键在于源代码转换成二进制机器码的时机不同。
接下来我将对五种常见语言进行分析:
- 编译型语言
- C
- C++
- Go
- 解释型语言(脚本语言)
- Python
- JavaScript
- 编译&解释语言
- Java
- TypeScript
(1)c/c++分析:我们在windows写c/c++语言时,需要下载gcc编译器。写完代码后,编译(预处理->编译->汇编->链接)生成.exe文件。 此时的.exe文件在计算机外存中。若计算机需要执行,直接运行即可。因此编译型语言的执行速度很快(因为可以直接运行,不需要解释)
(2)Java分析:编写完Java代码后,形成.java文件。我们首先要编译生成.class字节码文件。然后,在运行时内存会先运行JVM虚拟机。JVM虚拟机会实时将字节码文件解释为机器码文件。供计算机识别运行。
(3)Python/JavaScript分析:这两种语言没有中间产物,写完源代码直接放进内存运行,因此很方便,但是运行速度最慢。
(4)TypeScript分析:.ts文件需要先经过tsc编译,生成.js文件,然后js再被浏览器/Node.js解释运行。
(5)Go分析:.go文件经过编译,生成.exe可执行文件(windows系统)。直接被计算机识别执行。