解释语言与编译语言

一种编程语言能被计算机执行的前提是它在执行前被翻译成机器码. 根据这个翻译过程发生的时间不同, 可以将编程语句分为解释语言(Interpreter)与编译语言(Compiler). Interpreter还有口译的涵义. 在这里, 解释器就是口译者, 它将用户写的脚本语句口译成机器码给计算机"听".



我理解的的解释语言即脚本语言, 写完代码后可以直接运行而无需编译过程. 例如, Javascript, Python, Matlab, Shell. 而用编译语言写完代码后需要有编译操作, 然后才能执行. 不过, 这两个操作已经被很多IDE合并成一个(用户可见的)操作, 例如, 在Eclipse里面, 只需要\(F_{11}\)一下, Build与Run/Debug过程就可以自动无缝进行了.

Python 有点例外, 因为它在运行之前会产生一个pyc文件, 是一种介于Python代码与机器码的中间代码. 所以不能简单用是否会产生中间代码文件来判断一个语言是解释语言还是编译语言. 但是还是有一个简单直观的判断方法的: 可执行的代码文件一定是解释性的, 否则是编译性的. 可执行的含义限定为linux系统中文件权限控制码的最低位为1(例如001/1, 101/5, 111/7), 而不是IDE里可执行.

一般来说, 解释语言因为在执行时: (1)需要同时运行解释器, (2)边解释边运行, 在速度上有些慢. 而编译语言则将解释过程放在运行之前, 且运行时无其他overhead, 所以速度上有优势.

不过,听说python又是例外. 至于其原理, 暂时没有兴趣去了解.


Reference

Thinking in C++, 2nd, Chapter 2.

转载于:https://www.cnblogs.com/dengdan890730/p/6217266.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值