目录
编译型语言
例子
C、C++、Golang、汇编等
概念
对于编译型语言,开发完成以后需要将所有的源代码都转换成可执行程序,比如Windows下的.exe文件,可执行程序(.exe)里面包含的就是机器码,只要我们拥有可执行程序,就可以随时运行,不用重新编译了,达到“一次编译,无限次运行”
编译型语言一般是不能跨平台的,也就是说不能在不同的操作系统之间随意切换
对于编译型语言,我们下载到的是可执行文件,源码被作者保留,所以编译型语言的程序一般是闭源的
为什么编译型语言跨平台性较弱
因为不同操作系统实现的API接口不同,对可执行文件内部有不同的要求
不同平台支持的源代码可能不同,比如
Windows平台下该函数是Sleep,参数是毫秒
Linux平台下函数式sleep,参数是秒
解释性语言
例子
Python、JavaScript、Shell等
概念
对于解释性语言,每次执行程序都需要一边转换以便执行,用到哪些源代码就将哪些源代码转换成机器码,用不到的不进行处理
因为每次执行程序都需要重新转化源代码,所以解释性语言的执行效率天生就低于编译型语言,甚至存在数量级的差距。计算机的一些底层功能,比如操作硬件,或者关键算法,一般都使用C/C++实现,只有在应用层面(网站开发、小工具)才会使用解释型语言
因为再运行解释性语言得时候,我们始终都需要源代码和解释器
对于解释性语言来讲,我们下载到的是源代码,因为作者不给源代码,程序就无法运行,所以解释性语言的程序一般是开源的
为什么解释性语言能一处编写,到处运行
因为解释性语言存在解释器,我们所说的跨平台,是指源代码跨平台,不是指编译器跨平台,解释器用于将源代码转化为机器码,对于不同的平台,只需要用不同的解释器来翻译就好了,这些解释器必须遵循相同的语法,识别同样的函数,完成同样的功能,只有这样,同样的代码在不同平台的执行结果才是相同的
相当于在代码和操作系统之间,多了一层解释器,源代码相当于母语,解释器相当于不同的翻译,不同的操作系统相当于不同的语言,你想要让全世界的人们(操作系统)看懂你写的文章,只需要请不同的翻译(解释器)来对你的母语(源代码)进行翻译(就是)就可以了,而文章的内容与含义(源代码)是不变的,变得只是语言(操作系统)
参考文章