概念区别 【编译型语言与解释型语言、动态类型语言与静态类型语言、强类型语言与弱类型语言】

概念区别 【编译型语言与解释型语言、动态类型语言与静态类型语言、强类型语言与弱类型语言】

一、编译型语言与解释型语言

计算机只能够直接理解机器语言,不能够理解高级语言,所以若想运行高级语言编写的程序,都必须转换成计算机语言才可以被运行,计算机语言就是机器语言,将高级语言转换成机器语言的方式有两种,一种是编译,另外一种是解释,所以高级语言也被分为编译型语言和解释型语言。

这两者的主要区别在于编译和运行的顺序不同。

编译型语言是指将源程序进行编译后再运行,运行速度较快,会直接生成一个可以直接运行的机器语言的文件,例如在源文件下会生成一个exe文件,这样在下次运行的时候就不用编译可以直接使用编译结果,因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高,但其只能在特定平台进行程序运行,一般无法移植到特定平台。

解释型语言是在运行期间编译,不需要进行事先编译,可以直接通过平台提供的相应解释器将源代码解释成机器码并立即执行,即可运行该程序,解释型语言每次运行都要编译一次,因而效率较低,但是其跨平台性能较好,程序移植较为方便,可以在不同的平台运行。

现有的C、C++、Objective等都属于编译型语言,Python等属于解释型语言。

参考:什么是编译型语言和解释型语言

二、动态类型语言与静态类型语言

动态类型语言和静态类型语言主要是针对于数据类型的检查,两者对于数据类型的定义顺序不同。

动态类型语言是指在运行期间进行数据类型检查,这意味着在使用动态类型语言进行编译的时候,不需要给变量提前指定数据类型,动态类型语言会变量第一次赋值时,自动记录数据类型,这种语言对于数据的使用较为方便,可以在需要的时候再进行定义,较为自由。

静态类型语言是指在编译期间进行数据检查,然后再进行运行,这意味着使用静态类型语言进行编写程序的时候,就需要声明所有的数据类型,否则就会出错,这种数据类型运行速度较快,较为稳定,在大型项目时,为了可控,更多选用静态类型语言。

现有的C、C++、Java、Delphi、C#等都属于静态类型语言,Python、Ruby、Perl等都属于动态类型语言。

参考:动态类型语言语言与静态类型语言

三、强类型语言与弱类型语言

强类型语言和弱类型语言是针对于类型定义来说的,两者关于变量的类型定义的强制性不同。

强类型语言指的是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用,如果一个变量被指定了某个数据类型,如果不经过强制转换,它的数据类型则不会被改变。java、.NET、C++等都属于强类型语言。例如被定义为int的类型数据,只有经过转换,才可以视为其他类型。

弱类型语言指的是不强制类型定义的语言,数据类型可以被忽略,一个变量可以赋给不同的数据类型的值。vb,php等就属于弱类型语言。
参考:强类型和弱类型语言有什么不同

总结

编译型语言和解释性语言主要区别在于编译顺序的不同,动态类型语言和静态类型语言主要区别在于对于数据类型的定义顺序的不同,强类型语言和弱类型语言主要区别在于对于变量的数据类型的定义的不同。

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页