从字面上来看,编译和解释都有翻译的意思,区别是时机不同
刘慈欣写了一部《三体》,如果一个外国人想看这本书,有两种方式:
第一种:将整本书翻译成英文
第二种:让一个翻译官给我们翻译
但是如果《三体》内容又有更新了,那么采用第一种方式的话就需要重新翻译这本书,显然做了一些重复的事情。如果采用第二种方式的话,更新多少,翻译多少,这种虽然没有做重复的事情,但是如若想看以前的是看不到的,因为它是一种边说边翻译的一种形式,没有做任何的保存。
第一种方式对应的就是编译型语言,将所有的内容全部翻译完,执行效率非常块,但是内容改变了,需要重新再编译一遍。
第二种方式对应的就是解释型语言,边执行,边解释,无法记录历史操作。
编译型语言一般用于操作系统,C/C++属于编译型语言,将程序首先编译一遍,然后直接执行编译后的文件。
解释型语言一般用于网页,对速度要求不那么高,JavaScript/Python属于解释型语言。
Java既是编译型语言也是解释型语言。Java源代码首先要编译成.class(字节码)文件,类加载器将.class文件加载到内存之后,字节码校验器检验成功,然后解释器将.class文件翻译成操作系统能识别的机器码。