1、编译型语言
代表:C、C++、Obj-C、Swift
机算机能够识别的只有机器码,像OC这种编译型语言需要将源码先进行编译成机器码,之后才能执行。一般需要经过编译(compile)、链接(linker)这两个步骤。编译是把源代码编译成可执行码,而链接是将各个模块的机器码和依赖库串连起来生成可执行程序。
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
2、解释型语言
代表:Python、JavaScript
解释语言与编译语言最大的不同就是不需要编译这一道工序,解释性语言是在运行程序的时候逐行翻译。
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
Java语言它是先编译成.CLASS字节码文件,然后再利用虚拟机解释执行的.可以说先编译后解释。较为特殊。
3、动态语言
是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。
主要动态语言:Object-C、C#、JavaScript、PHP、Python、Erlang。
3、注意:
很多人认为解释型语言都是动态语言,这个观点是错的!Java是解释型语言但是不是动态语言,Java不能在运行的时候改变自己结构。反之成立吗?动态语言都是解释型语言。也是错的!Object-C是编译型语言,但是他是动态语言。得益于特有的run time机制(准确说run time不是语法特性是运行时环境,这里不展开)OC代码是可以在运行的时候插入、替换方法的。
网友评论