静态语言和动态语言,解释和编译

Posted 盖丽男

tags:

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

定义

先来看一下各种名词的定义

静态类型语言(Statically Typed Language)

静态类型语言是C,C++,Java等语言,在这种类型的语言中,变量的数据类型在编译时是已知的,这意味着程序员必须在声明变量时指定变量的数据类型。我们必须预先定义函数的返回类型,以及它正在接受或接受的变量类型,以便进一步评估。

动态类型语言(Dynamically Typed Language)

这些语言不需要任何变量的任何预定义数据类型,因为它在运行时由机器本身解释。在这些语言中,解释器在运行时根据其值将数据类型分配给变量。我们甚至不需要指定函数在这些语言中返回或接受的变量类型。 javascript, Python, Ruby, Perl 等是动态类型语言的例子。

脚本语言(Scripting language)

脚本语言是一种被解释的编程语言。它在代码运行时(而不是事先)转换为机器代码。脚本语言通常用于完整计算机程序上的短脚本。JavaScript, Python, Ruby 都是脚本语言的例子。

脚本语言一定是动态语言。

解释执行(interpretation)

编译执行(compilation )

讨论

动态/静态语言和解释/编译执行之间有必然的对应关系吗?

结论:没有
Java是解释型语言但是不是动态语言,Java不能在运行的时候改变自己结构。反之成立吗?动态语言都是解释型语言。也是错的!Object-C是编译型语言,但是他是动态语言。得益于特有的run time机制(准确说run time不是语法特性是运行时环境,这里不展开)OC代码是可以在运行的时候插入、替换方法的。

脚本语言和动态语言是一回事儿吗?

关于这个问题,我觉得这篇文章写的很好:动态语言——披着彩衣飞舞的脚本语言

为什么会出现编译执行和解释执行两种方式?

参考

编程语言傻傻分不清:弱类型、强类型、动态类型、静态类型

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

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

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

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

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

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

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

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