相信学计算机的人都应该学过不止一种程序语言,很多时候,很可能是两种,或者三种,甚至有人4种5种,当然,大部分人都知道它们是编译型的或者是解释型的,但是有多少人去了解过他们各自的优缺点?我也正如那大部分人一样,知道这是什么类型的语言,不过也很少去真正了解过它们!
那么什么是解释型语言?什么是编译型语言?
大家都知道,计算机是不能直接理解高级语言的,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序,而翻译的方式有两种,一种编译,另一种就是解释,两者翻译的时间不同!
编译型语言写的程序在执行之前,需要一个专门的编译过程,把程序编译成机器语言的文件,比如将hello.c文件进行预处理,编译,汇编和链接,最终生成可执行代码文件,这样以后再次运行的时候,就可以直接使用编译的结果(即exe文件)!
解释型语言不需要编译,省了道工序,解释型语言是在运行程序的时候才翻译的,需要一个专门的解释器能够执行解释型语言写的程序,每个语句都是执行的时候才进行翻译的!
编译型语言的优点:
1:因为可以直接使用编译的结果而不需要再次翻译,所以执行的效率是比较高的!
2:编译程序将源程序翻译成目标程序后保存在另一个文件中,该目标程序可以脱离编译程序直接在计算机上多次使用,大部分软件产品都是以目标程序形势发行给用户的,不仅便于直接执行,而且又使得他人难以盗用期中的技术!
编译型语言的缺点:
1:编译执行的语言因为要直接同CPU的指令集打交道,具有很强的指令依赖性和系统依赖性!
2:编译后的程序是由机器语言指令构成的,但是使用不同硬件平台的计算机,它们的机器语言是不同的,使得便宜过的程序不 能顺利从一个计算机平台往另外一个平台上移植,因此在不同的平台上往往需要重新编译甚至重写程序,这将会耗费大量的人力物力财力!
解释型语言的优点:
1:一般情况下,只要有相应版本的语言解释器,解释型语言所写的程序可以几乎不做任何修改地移植到其他平台上去,这相对于编译型语言来说,是个极大的优势!
2:解释型语言所写的程序是逐行进行翻译执行命令的,因此当语句出现语法问题的时候,可以立即引起程序猿的注意,而程序猿在程序开发期间就能进行校正!
解释型语言的缺点:
1:解释型语言的实现中,翻译器并不产生目标机器代码,而是产生易于执行的中间代码,但是这种中间代码与机器代码不同,中间代码的解释是由软件支持的,不能直接使用硬件,软件解释器通常会导致执行效率较低,并且每执行一次就得再翻译一次,不能像编译型语言那样,一次编译,任意次使用,因而效率方便没有编译型的高!