1、代码是如何被执行的
1.1、解释型、编译型、混合型语言
(1)编译型语言
对于类似 C++ 这样的编译型语言,代码会事先被编译成机器指令(可执行文件),然后再一股脑儿交给 CPU 来执行
在执行时,CPU 面对是已经编译好的机器指令,直接逐条执行即可,执行效率比较高
但因为每种类型的 CPU(比如 Intel、ARM 等)支持的 CPU 指令集不同,并且程序还有可能调用操作系统提供的 API
所以,编译之后的可执行文件只能在特定的操作系统和机器上执行,换一种操作系统或机器,编译之后的可执行文件就无法执行了
(2)解释型语言
对于类似 Python 这样的解释型语言,代码并不会被事先编译成机器指令
而是在执行的过程中,由 Python 虚拟机(也叫做解释器)逐条取出程序中的代码,编译成机器指令,交由 CPU 执行
完成之后,再取出下一条代码,重复上述的编译、执行过程
这种一边编译一边执行的过程,叫做解释执行
解释型语言相对于编译型语言,执行速度会慢一些
因为程序是在执行的过程中一边编译一边执行的,所以,程序整体的执行时间包含了程序编译的时间
不过,使用解释性语言编写的代码,可移植性更好
程序在执行的过程中,虚拟机可以根据当前所在机器的 CPU 类型和操作系统类型,翻译成不同的 CPU 指令
这样,同一份代码就可以运行在不同类型的机器和不同类型的操作系统上,这就是常听到的 "一次编写,到处运行"