和我一起迎接明天的太阳吧

klaus08

焦虑源于行动的匮乏

编译型语言与解释型语言

在说这两者的区别之前,先要说一下,我们平时编程所用的高级语言都是都是电脑识别不了的(直接写01码的打扰了).所以在机器执行前,需要先将高级语言转化为机器能理解的机器语言.而转化的的的方法大概有这么两种:

一、编译

二、解释

一、编译

先说说大家编译语言的代表语言:C,C++.

这种语言的特点就是多次运行较快.它只需要在机器上进行一次编译,就能得到机器可识别的二进制执行文件(这个可执行文件知识针对当前平台的),并且此后再使用时就不需要进行编译而直接使用了,即执行可以脱离开发环境.此外,编译语言的另一特点就是代码安全度较高.发布软件时只需要提供各个平台的可执行文件即可,不需要公布源码.

但正是这种特性造就了它最明显的缺点:不可跨平台.道理很简单,因为编译型语言的程序是被翻译成特定平台上的机器码.就好比你在win下编译得到的exe文件是不可能在macOS,Linux下跑起来的吧?如果需要移植,只能将源码复制到新平台上,然后重新编译

二、解释

解释型语言的代表就是JS,python还有比较特殊的java.

与编译型语言不同,解释型语言在不需要编译,而是在执行的时候,通过特定的解释器将语言翻译成机器语言.显然这样效率明显不如前者,每次运行都需要解释器一句一句地翻译,但好处就是对不同系统的兼容性更高,只需要提供特定平台上的解释器即可.可以看出,解释型语言的可移植性是以牺牲程序运行效率为代价的.

因为需要翻译,所以执行时都需要源码,代码安全性并不高.

特殊的JAVA

前面之所以说JAVA比较特殊,是因为作为一个解释型语言,它在执行时也经历了编译的步骤.不过这步编译生成的并不是特定平台的机器码,而是与平台无关的字节码(.class文件),然后再由JAVA解释器(JVM)来解释执行.

posted @ 2020-03-12 18:21  klaus08  阅读(37)  评论(0编辑  收藏  举报