快捷搜索: 王者荣耀 脱发

静态语言与动态语言的区别

静态语言与动态语言的区别

我们先来解释一下三个名词:

动态类型语言:在运行期间检查数据的类型的语言。用这类语言编程,不会给变量指定类型,而是在附值时得到数据类型。如:Python和ruby就是典型动 态类型语言。很多脚本语言lua, javascript也是这类语言。看下面javascript代码:

function add(a,b){
return a+b;
}
add(1,2);
add(1,2);

动态语言:指在程序运行过程中可以改变数据类型的结构,对象的函数,变量可以被修改删除。比如:javascript就是这类语言,ruby, python也属于这类语言。而c++,java不属于这类语言。看javascript代码:

function Person(name){
          
   
this.name=name;
}
Person.prototype.getName=function(){
          
   
return this.name;
}
var person=new Person("okok");
alert(person.getName());
person.getName=function(){
          
   return "nono"};
alert(person.getName());

静态类型语言:相反静态类型语言是在运行前编译时检查类型。在写代码时,没声明一个变量必须指定类型。如:时下擅长并行编程的go,Java,c#,c,c++等等。

public int add(int a,int b){
return a+b;
}

总结

动态类型语言,意思就是类型的检查是在运行时做的,比如如下代码是不是合法的要到运行时才判断。

动态语言,就是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等,动态的对其结构进行改动。一般动态语言都会支持动态类型,常出现于脚本语言中。

动态语言的优势是不需要分心去考虑程序编程问题,而集中精力思考业务逻辑。

而静态类型语言的类型判断是在运行前判断(如编译阶段),比如C#就是一个静态类型语言,静态类型语言为了达到多态会采取一些类型鉴别手段,如继 承、接口,而动态类型语言却不需要。

静态类型语言的主要优点在于其结构非常规范,便于调试,方便类型安全;缺点是为此需要写更多的类型相关代码。静态类型语言因为类型强制声明,所以IDE可以做到很好的代码感知能力,因为有IDE的撑腰,所以开发大型系统,复杂系统比较有保障,且代码在运行前就被编译成机器码,所有运行效率较高。

经验分享 程序员 微信小程序 职场和发展