静态语言和动态语言,解释和编译
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代码是可以在运行的时候插入、替换方法的。
脚本语言和动态语言是一回事儿吗?
关于这个问题,我觉得这篇文章写的很好:动态语言——披着彩衣飞舞的脚本语言
为什么会出现编译执行和解释执行两种方式?
参考
编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别
以上是关于静态语言和动态语言,解释和编译的主要内容,如果未能解决你的问题,请参考以下文章