编译语言和解释语言html
一、编译语言:缓存
须要经过编译器(compiler)将源代码编译成机器码,以后才能执行的语言。函数
通常需通过编译,连接两个步骤:post
编译:把原代码编译成机器码性能
连接:把各个模块和依赖库串起来生成可执行文件。优化
优势: 编译器通常会有预编译的过程对代码进行优化。由于编译只作一次,运行时不须要编译,因此编译型语言的程序执行效率高。能够脱离语言环境独立运行。url
缺点: 编译以后若是须要修改就须要整个模块从新编译。编译的时候根据对应的环境生成机器码,不一样的操做系统之间移植会有问题,须要根据运行的操做系统环境编译不一样的可执行文件。操作系统
表明语言: C 、C++, Pascal、Object-C,Swift.net
二、解释型语言翻译
解释性语言的程序不须要编译,相比编译型语言省了道工序,解释性语言在运行程序的时候才开始逐行翻译。
优势:
有良好的平台兼容性,在任何环境中均可以运行,前提示安装了解释器(虚拟机)。
灵活,修改代码的时候直接修改就能够,能够快速部署,不用停机维护。
缺点: 每次运行的时候都要解释一遍,性能上不如编译语言
表明语言: JavaScript,Python,Erlang,PHP,Perl,Ruby
三、混合语言
既然编译型和解释型各有缺点就会有人想把两种类型整合起来,取其精华取其糟粕。就出现了半编译型语言。
好比C#。C#在编译的时候不是直接编译成机器码而是中间码,.Net平台提供了中间语言运行库运行中间码,中间语言运行库相似于Java虚拟机。.net在编译成IL代码后,保存在dll中,首次运行时,由JIT在编译成机器码缓存在内存中,下次直接执行。
Java生成字节码,再在Java虚拟机中解释执行。
严格来讲混合语言属于解释性语言。C#更接近编译型语言。
动态语言和静态语言
一、动态语言
是一类在运行时能够改变其结构的语言: 例如新的函数、对象、甚至代码能够被引进,已有的函数能够被删除或其它结构的变化。通俗点说就是在运行代码时能够根据某些条件改变自身结构。
主要的动态语言: Object-C,C#, JavaScript,PHP,Python, Erlang。
二、静态语言
与动态语言相对应的,运行的时候结构不可改变就是静态语言。
主要的静态语言: Java、C、C++
参考: