加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

什么是静态语言/动态语言

(2011-03-07 15:56:32)
标签:

杂谈

分类: 基本概念
对于概念性的东西一向不善于分辨记忆,如果你要问我什么是静态语言什么是动态语言,我一定回答不正确或不完整,我可能会以为动态语言就是需要编译然后运行的语言(像C#等面向对象的语言),而静态语言就是不需要编译就直接运行的语言(像javascript等脚本语言)。。。。但似乎听说过“动态脚本语言”。。。。?到底什么是静态语言什么是动态语言还真的不知道。

      

下面就来好好学习下吧

     

静态语言:静态类型语言的类型判断是在运行前判断(如编译阶段),比如C#就是一个静态类型语言。

     

动态语言:是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的ECMAScript(JavaScript)便是一个动态语言。除此之外如Ruby、Python等也都属于动态语言。

     

静态语言与动态语言的优缺点:静态类型语言的主要优点在于其结构非常规范,便于调试,方便类型安全;

缺点是为此需要写更多的类型相关代码,导致不便于阅读、不清晰明了。

 

动态类型语言的优点在于方便阅读,不需要写非常多的类型相关的代码;

缺点自然就是不方便调试,命名不规范时会造成读不懂,不利于理解等。静态类型语言为了达到多态会采取一些类型鉴别手段,如继承、接口,而动态类型语言却不需要,所以一般动态语言都会采用dynamic typing,常出现于脚本语言中。

强类型定义语言和弱类型定义语言

(1)强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。

(2)弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。

强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有