动态语言:
运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。
优点:优点为方便阅读,清晰明了,缺点为不方便调试
代表:Object-C、C#、JavaScript、PHP、Python、Erlang
静态语言:
相对的,运行时结构不可变的语言就是静态语言。
优点:与动态语言相反
代表:Java、C、C++
动态类型语言:
在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型,某些具有类型推导能力的现代语言可能能够部分减轻这个要求.
静态类型语言:
在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。
强类型语言:
不同类型进行变量赋值时,需要显示地(强制)进行类型转换
弱类型语言:
不同类型进行变量赋值时,需要显示地(强制)进行类型转换

计算机只能理解机器码,所有的高级语言需要转换成机器语言才能执行。
解释型语言:
无需进行编译,仅以中间代码形式发布,在运行时才由解释器翻译为机器码执行,比较像同声传译
优点是其执行依赖于解释器,只要有对应平台的解释器,则可以跨平台移植。但是其运行时才进行翻译,导致其效率不高
代表:Python/JavaScript / Perl /Shell
编译型语言:
即需要经过编译器将其编译成机器码后才可以执行的语言,一般都有编译和链接两个过程,编译相当于直接翻译,链接则相当于本地化的润色优化。
优点是一次编译,多次运行,其最终程序执行效率高。但是各种平台支持的机器码格式不同,导致其生成的可执行文件是无法跨平台的。
代表是:C、C++、Delphi
混合型语言
介于两者之间,实质上仍然是解释型语言
会进行编译但是运行仍然依赖于容器,如jvm和.net的运行库。但是.net在第一次运行后会直接将机器码缓存在内存中,之后就直接执行。部分 JVM(java 虚拟机)有一种 JIT(Just in time)机制,同样会保存常用的指令,这些后期运行就不用再次编译了。
结合了两者的优点,移植性好,同时执行效率比一般的解释性语言快
代表:C#,java
网友评论