编程语言
Sep 11, 2016
编译型语言与解释型语言的区别, 编译器与解释器, 源代码与机器码.
一些基本概念
编程语言是人类和计算机进行沟通的工具,我们用特定编程语言写出的指令集合就是源代码,但计算机的CPU无法直接识别这些源代码(source code),CPU只能识别机器码(machine code).因此需要将源代码转换成CPU可以识别的机器码.
源代码转换为机器码的方式
1. 编译器(compilers)
编译器直接将源代码文件全部编译为机器码文件,生成的文件可以在计算机中直接执行,例如我们安装新程序时经常会见到的以.exe为扩展名的文件,exe就是executable的缩写.只利用编译器转换源代码的编程语言叫做编译型语言(compiled language),编译型语言有C,C++,objective-c等.
2. 解释器(interpreters)
解释器获取的是源代码的拷贝,实时地将源代码一行一行地解释为机器码,JavaScript是解释型语言,我们计算机中的浏览器就是解释器.php也是解释型语言.
3. 即时编译器(JIT-compilers)
即时编译器混合了这二者,先将源代码一句一句编译为中间语言比特码(byte code),但是会将翻译过的代码缓存起来以降低性能损耗.运用了即时编译器的编程语言Java,C#,VB.NET,Python
编译型语言与解释型语言
优缺点
编译型语言
优点:
- 编译可直接在自己的计算机中执行
- 不需要发送源代码
- 执行速度更快
缺点:
- 无法跨平台,如.exe文件PC可识别,但MAC不可,不同的CPU识别的可执行文件类型有时也会有差异
- 测试时需要多一步编译的过程
解释型语言
优点:
- 跨平台,如JavaScript文件依靠浏览器运行.
- 测试更容易
- 能够获取源代码,调试更容易
缺点:
- 机器需要有解释器才能运行文件
- 程序每次运行多需要进行解释,速度慢
- 源代码公开有安全风险
各自适用场景
如果程序只在一个平台运行,追求效率和性能,用编译型语言,如用objective-c写ios app只在ios系统中运行;如果程序需要跨平台运行,就用解释性语言,如用JavaScript写web app.
参考