为什么有的代码要编译才能执行,有的不需要?

636 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第11天,点击查看活动详情 为什么代码要经过编译之后才能执行呢?

大家想一想,为什么当我们在写完Java或者C语言的时候,我们一般要经过编译,在能执行我们写的代码逻辑呢?而html或者PHP不需要经过长时间的编译就能执行呢?

为了解释上边的两个原因,我们首先来说下C或者Java为什么要编译之后才能执行,我们的计算机主要是由一些CPU、硬盘、显卡、主板、内存等一系列硬件组成,我们日常的一些输入输出的操作主要是针对这些硬件的操作,

这些硬件的操作主要是由一系列的底层操作指令进行操作,调动各个硬件,配合工作,那么这就要引出计算机的灵魂----操作系统了,操作系统封装了一系列针对计算机硬件操作的指令,比如底层封装了两个指令,指令1是针对硬盘的操作,指令2是针对显示器的操作

image-20221206170254679.png

Ok,这些指令就是针对硬件的一些机器语言,大概就是一些0101类似的指令,这些我们一般肉眼很难识别出来是啥意思,我们一般用的C语言或者Java写的一些逻辑主要就是针对底层的指令调用,但是这些指令又跟我们的编程语言产别很大,我们又想操作系统识别我们的编程逻辑,怎么办呢?

这时候就要引出编译器了,编译器,会将我们编写的程序翻译成计算机可以识别的机器语言,然后操作系统再将这些编译后的文件加载到内存,进行执行。

04_编译.png

那有有时候大家可能会说,为什么HTML之类的脚本语言不用编译呢?

脚本语言一般也被称为解释语言,就是执行一些简单的指令操作,一般由解释器一行一行读取进行解释,然后翻译成机器可执行的指令,一般是把一系列的计算机指令组合在一起,做一系列的操作,脚本语言主要是为了缩短编译到运行的过程。

image-20221206172626149.png

所以,两边的主要区别就是,一个要经过编译,翻译成机器语言,一边只是解释成相应的指令执行。