shell脚本-解释型语言与编译型语言的差异

        以Java、各种脚本语言为代表的解释性语言和以C、C++为代表的编译型语言同时存在了很长一段时间,并且这种情况还会继续下去。“存在即合理”,所以这两种类型的语言在不同的应用场合下发挥着自己的特长,以满足用户的需求。

        解释型语言的特点是在目标系统中需要有一个解释器,用户所编写的程序或脚本是一行一行被解释器读入,由解释器负责执行的。这就是说用户所编写的程序或脚本只需要能让解释器“看懂”就可以了(换句话说就是与操作系统没什么关系)。当解释器被移植到多个平台(硬件+操作系统)时,用户的脚本也就同时被移植过去了(其实还有工作要做,不过大部分工作已经被搞定)。目前大红大紫的Java就是特点最为鲜明的解释型语言。当然,运行在Unix/Linux中的Shell脚本也是这种解释型语言。Shell脚本本质上就是文本文件,用任意的文本编辑器都能够打开。Java语言也需要经过编译,不过其编译的主要的目的是生成解释器能够看懂的“脚本”,并进行优化。

 

        编译型语言的特点是程序编写完毕后,需要经历一个编译的过程,生成在目标系统(硬件+操作系统)能够直接执行的2进制文件,即可执行程序或各种库。这种2进制文件是由对应硬件平台的机器码组成的,可以理解为由一堆0和1组成的,人类无法用眼睛看明白的(传说中有可以直接看懂机器码的牛人,不过我没见过),普通的文本编辑器无法打开的奇怪的文件。不过幸好,当硬件平台和操作系统两方面合起来,目标平台就可以理解有这堆2机制代码背后隐含的用户意图。

 

        从通常意义上说,编译型语言由于与硬件平台(主要是指令系统)结合度高,因此拥有很高的效率(编译器也功不可没)。而解释型语言拥有的特有的灵活性,可以在复杂的应用环境之间轻快的跳转。

        实际上,随着CPU频率的不断提升和硬件对解释型语言的优化支持,效率问题也不是那么严重了。而不少开源工程中,对不同的CPU架构都有相应的支持,只要通过简单的编译配置,就可以生成不同目标平台的可执行程序和库,因此移植方面的问题也没想象中那么严重了。

 

        关于解释型语言好还是编译型语言好这个无聊的问题争论了很久。语言只是个工具,物尽其用,各取所长就可以了。没有一类或一种语言可以统一整个业界,现在没有,将来也不会有。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值