动态语言和静态语言比较

动态语言和静态语言比较

ID:5525077

大小:36.66 KB

页数:19页

时间:2017-12-17

动态语言和静态语言比较_第1页
动态语言和静态语言比较_第2页
动态语言和静态语言比较_第3页
动态语言和静态语言比较_第4页
动态语言和静态语言比较_第5页
资源描述:

《动态语言和静态语言比较》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、动态语言和静态语言有三个名词容易混淆:1.DynamicProgrammingLanguage(动态语言或动态编程语言)2.DynamicallyTypedLanguage(动态类型语言)3.StaticallyTypedLanguage(静态类型语言)FantasySoft在他文章中所提到的动态语言与静态语言实际上指的就是动态类型语言与静态类型语言。动态语言,准确地说,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的ECMAScript(JavaScript)便是一个动态语言。除此之外如Rub

2、y、Python等也都属于动态语言,而C、C++等语言则不属于动态语言。所谓的动态类型语言,意思就是类型的检查是在运行时做的,比如如下代码是不是合法的要到运行时才判断(注意是运行时的类型判断):defsum(a,b):returna+b而静态类型语言的类型判断是在运行前判断(如编译阶段),比如C#就是一个静态类型语言,静态类型语言为了达到多态会采取一些类型鉴别手段,如继承、接口,而动态类型语言却不需要,所以一般动态语言都会采用dynamictyping,常出现于脚本语言中。(idior不知道这能不能回答你对动态语言多态的疑问^_^)这里我需要明确说明

3、一点,那就是,是不是动态类型语言与这门语言是不是类型安全的完全不相干的,不要将它们联系在一起!静态类型语言的主要优点在于其结构非常规范,便于调试,方便类型安全;缺点是为此需要写更多的类型相关代码,导致不便于阅读、不清晰明了。动态类型语言的优点在于方便阅读,不需要写非常多的类型相关的代码;缺点自然就是不方便调试,命名不规范时会造成读不懂,不利于理解等。顺便说一下,现在有这样一种趋势,那就是合并动态类型与静态类型在一种语言中,这样可以在必要的时候取长补短,Boo就是一个很好的试验性例子。^_^最后说一下Boo,Boo是一个静态类型语言,虽然用duckty

4、ping可以模拟dynamictyping,但是duck并不支持所有类型的操作替代,所以即使完全使用ducktyping也不能达到dynamictyping。就像FantasySoft所述,TypeInference不是动态类型语言的特性,所以支持TypeInference不代表这门语言就是dynamicallytyped。再特地为Ninputer这个VB的fans说一下VB.NET^_^,VB.NET是dynamicallytyped语言。1.动态语言DynamicallyTypedLanguage例如:ECMAScript(JavaScript)

5、、Ruby、Python、VBScript、php也叫动态类型定义语言与静态类型定义相反,一种在执行期间才去发现数据类型的语言,动态语言是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。动态语言的类型检查是在运行时做的。它的优点是方便阅读,不需要写非常多的类型相关的代码;缺点是不方便调试,命名不规范时会造成读不懂,不利于理解等。目前java平台下的动态语言有Groovy、nice、BeanShell、Jython、JRuby、Rhino(JavaScript)、Jacl(TCL)、Bistro(SmallTal

6、k)、Kawa(Lisp/Schema),真是越来越多了。java下这么多的动态语言建议选择Groovy,感觉血统较为正宗,兼容Java的语法,java程序员学习起来较为容易,上手较快。2.静态语言StaticallyTypedLanguage例如:C、C++、Java也叫静态类型定义语言。即一种在编译时,数据类型是固定的语言。大多数静态类型定义语言强制这一点,它要求你在使用所有变量之前要声明它们的数据类型。在使用数据之前,我们必须首先定义数据类型,这些数据类型包括int,float,double等等。就相当于在使用它们之前,首先要为它们分配好内存空

7、间。静态类型语言的主要优点在于其结构非常规范,便于调试,方便类型安全;缺点是为此需要写更多的类型相关代码,导致不便于阅读、不清晰明了。3.强类型定义语言一种总是强制类型定义的语言。Java和Python是强制类型定义的。如果你有一个整数,如果不显示地进行转换,你不能将其视为一个字符串4.弱类型定义语言一种类型可以被忽略的语言,与强类型定义相反。VBScript是弱类型定义的。在VBScript中,可以将字符串'12'和整数3进行连接得到字符串'123',然后可以把它看成整数123,而不需要显示转换。5.脚本语言脚本语言代表一套与系统程序设计语言不同的

8、协定。它们牺牲执行速度和与系统程序设计语言相关的类型长度而提供更高的编程创作力和软件重用。脚本语言更适合在联

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。