编译型语言与解释型语言
在说这两者的区别之前,先要说一下,我们平时编程所用的高级语言都是都是电脑识别不了的(直接写01码的打扰了).所以在机器执行前,需要先将高级语言转化为机器能理解的机器语言.而转化的的的方法大概有这么两种:
一、编译
二、解释
一、编译
先说说大家编译语言的代表语言:C,C++.
这种语言的特点就是多次运行较快.它只需要在机器上进行一次编译,就能得到机器可识别的二进制执行文件(这个可执行文件知识针对当前平台的),并且此后再使用时就不需要进行编译而直接使用了,即执行可以脱离开发环境.此外,编译语言的另一特点就是代码安全度较高.发布软件时只需要提供各个平台的可执行文件即可,不需要公布源码.
但正是这种特性造就了它最明显的缺点:不可跨平台.道理很简单,因为编译型语言的程序是被翻译成特定平台上的机器码.就好比你在win下编译得到的exe文件是不可能在macOS,Linux下跑起来的吧?如果需要移植,只能将源码复制到新平台上,然后重新编译
二、解释
解释型语言的代表就是JS,python还有比较特殊的java.
与编译型语言不同,解释型语言在不需要编译,而是在执行的时候,通过特定的解释器将语言翻译成机器语言.显然这样效率明显不如前者,每次运行都需要解释器一句一句地翻译,但好处就是对不同系统的兼容性更高,只需要提供特定平台上的解释器即可.可以看出,解释型语言的可移植性是以牺牲程序运行效率为代价的.
因为需要翻译,所以执行时都需要源码,代码安全性并不高.
特殊的JAVA
前面之所以说JAVA比较特殊,是因为作为一个解释型语言,它在执行时也经历了编译的步骤.不过这步编译生成的并不是特定平台的机器码,而是与平台无关的字节码(.class文件),然后再由JAVA解释器(JVM)来解释执行.
本文来自博客园,作者:klaus08,转载请注明原文链接:https://www.cnblogs.com/klaus08/p/15105033.html