编译型语言,解释型语言,静态语言,动态语言概念

Posted linlf03

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译型语言,解释型语言,静态语言,动态语言概念相关的知识,希望对你有一定的参考价值。

编译语言和解释语言

1、编译语言:

需要通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言。

一般需经过编译,链接两个步骤:

编译:把原代码编译成机器码

链接:把各个模块和依赖库串起来生成可执行文件。

优点: 编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。

缺点: 编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的环境生成机器码,不同的操作系统之间移植会有问题,需要根据运行的操作系统环境编译不同的可执行文件。

代表语言: C 、C++, Pascal、Object-C,Swift

 

2、解释型语言

解释性语言的程序不需要编译,相比编译型语言省了道工序,解释性语言在运行程序的时候才开始逐行翻译。

优点:

有良好的平台兼容性,在任何环境中都可以运行,前提示安装了解释器(虚拟机)。

灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。

缺点: 每次运行的时候都要解释一遍,性能上不如编译语言

代表语言: javascript,Python,Erlang,php,Perl,Ruby

 

3、混合语言

既然编译型和解释型各有缺点就会有人想把两种类型整合起来,取其精华取其糟粕。就出现了半编译型语言。

比如C#。C#在编译的时候不是直接编译成机器码而是中间码,.Net平台提供了中间语言运行库运行中间码,中间语言运行库类似于Java虚拟机。.net在编译成IL代码后,保存在dll中,首次运行时,由JIT在编译成机器码缓存在内存中,下次直接执行。

Java生成字节码,再在Java虚拟机中解释执行。

严格来说混合语言属于解释性语言。C#更接近编译型语言。

 

动态语言和静态语言

1、动态语言

是一类在运行时可以改变其结构的语言: 例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或其它结构的变化。通俗点说就是在运行代码时可以根据某些条件改变自身结构。

主要的动态语言: Object-C,C#, JavaScript,PHP,Python, Erlang。

 

2、静态语言

与动态语言相对应的,运行的时候结构不可改变就是静态语言。

主要的静态语言: Java、C、C++

 

参考:

1、编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别

以上是关于编译型语言,解释型语言,静态语言,动态语言概念的主要内容,如果未能解决你的问题,请参考以下文章

编译型语言,解释型语言,静态语言,动态语言概念

编译型语言解释型语言静态类型语言动态类型语言概念与区别

编译型语言解释型语言静态类型语言动态类型语言概念与区别

编译型语言解释型语言静态类型语言动态类型语言概念与区别

转载编译型语言解释型语言静态类型语言动态类型语言概念与区别

编译型与解释型动态语言与静态语言强类型语言与弱类型语言的区别