编程语言 / 编译 / 解释 · 2023年 10月 5日 0

编译型语言和解释型语言

73 次浏览

年代区分

从硬件技术和软件需求,计算机发展初期,没有可能发展真正的解释型语言,运行速度和内存都受限,只有给机器喂二进制代码才能勉强跑起来。但事实上,解释型语言却在计算机发展很早的时期曾经出现过,当然这和前面一段话并不冲突,它是由自身的考虑,也并非为了推广。

各种类型语言

  • 直接编译成二进制native代码的语言,属于编译型语言,如Fortran/Pascal/C/Objc/C++/Swfit/Rust/Go/仓颉.
  • 不需要编译成中间代码或二进制代码,可由解释器读取并执行,属于解释型语言,如Perl/PHP/Python/JavaScript/Ruby.
  • 需要先编译(成中间代码),再由解释器或虚拟机执行,属于混合型语言,如Java/C#/VB.NET.
  • VB6很特殊,开发时像解释型语言,发布应用程序可编译成伪代码P-code + 部分本机代码,运行时需要VB运行时解释P-code并执行.

互相转换

编译型语言一定可以做成解释型,但解释型一般却不能反向操作。比如经典的TCC编译器,只需要一个-run参数即可让编译器编译并执行给出结果,本质上,每种编译型语言都可以这样做。解释型语言主要为了修改方便,没有必要先“编译”,这是设计的一部分。