编译与解释型语言的产生
计算机只能识别二进制编码(机器码)所以任何语言在交由计算机执行时必须要先转换为机器码,也就是像print('heoll')必须转换为类似1010101这样的机器码。
根据转换时机的不同,语言分成了两大类编译语言和解释型语言
编译型语言
编译型语言,会在代码执行前将代码编译为机器码,然后将机器码交由计算机执行
a(源码)————编译————b(编译后的机器码)
代表性语言
C语言、、C++、Objective-C、Swift、Kotlin等
编译型语言的特点
执行速度快
跨平台性差
解释型语言
解释型语言,不会在执行前对代码进行编译,而是在执行的同时一边执行一边编译
a(源码)————解释器———解释器执行
代表性语言
Python、JavaScript 、Perl 、Shell
解释型语言的特点
执行速度比较慢
跨平台性比较好
解释型语言与编译语言的区别
解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个 解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。
编译型与解释型,两者各有利弊
前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。
编译性语言不如解释性语言跨平台性好
编译性语言例如c语言:用c语言开发了程序后,需要通过编译器把程序编译成机器语言(即计算机识别的二进制文件,因为不同的操作系统计算机识别的二进制文件是不同的),所以c语言程序进行移植后,要重新编译。(如windows编译成ext文件,linux编译成erp文件)。
解释性语言,例如java语言,java程序首先通过编译器编译成class文件,如果在windows平台上运行,则通过windows平台上的java虚拟机(VM)进行解释。如果运行在linux平台上,则通过linux平台上的java虚拟机进行解释执行。所以说能跨平台,前提是平台上必须要有相匹配的java虚拟机。如果没有java虚拟机,则不能进行跨平台。