编程语言分类

什么是编译型语言?

什么是解释型语言?

有没有既是编译型的又是解释型的语言?


编译型语言

从我们入门接触到的C语言,到C++,这几个基础常见的都是编译型语言,对应我们常用的IDE(叫做编译器),有Visual Studio

编译型语言由编译器编译成二进制文件(我们叫机器语言),再由操作系统来执行。一次性编译完整个文件程序语言--》机器语言--〉执行

优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高,可以脱离语言环境独立运行。

缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。

总结:执行速度快、效率高;依靠编译器、跨平台性差些。

解释型语言

听的最多的是python,对应常用编译器Pycharm,其次可能是JS(JavaScript,像我刚开始自学前端学到这三剑客最后一剑),编译器好多。这两种是解释性语言,直接由解释器来执行的。

解释器将程序语言先翻译成中间代码,在运行时才将中间代码翻译成机器语言来执行。解释器是解释一行,就执行一行。程序语言--》中间代码--〉机器语言--》执行

优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。

缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。

总结:执行速度慢、效率低;依靠解释器、跨平台性好。

二者得兼?

我们来看Java,一个.java文件如果不进行编译,什么也干不了,从这点上看属于编译型语言。但是一个.java文件需要先经过编译变成.class(字节码)文件,才可以被虚拟机JVM所执行。从“编译成.class文件”这点看,.class文件不能直接执行,它更像是一种中间代码,所以认为它是解释型语言。如果要对程序进行修改,又必须重新编译,这点看又属于编译型语言。

但是,我们在谈到Java语言时,都说它好在跨平台的特性,所以个人更倾向于说Java说解释型语言。

你可能感兴趣的:(编程语言分类)