动态语言OR静态语言

JavaScript,ruby,Python都是经典的动态语言,可以在运行的时候,动态改变对象的数据和结构。相比C++,VB.NET,C#等静态编译语言。其对象是在若有若无中变幻的。

智能枚举对象成员
相比静态语言;动态语言的优点,可能也就是他的缺点。其对象的不确定性。使他只能通过对对象整个生存期的分析,才能调用或获取其提供的数据和功能。对于大型集成化的项目。大型IDE开发化境中。枚举对象成员,已经是现在的IDE的标配。这可以简化程序员查找对象成员的时间。然而动态语言由于其对象的不确定性。至今没有卓越的IDE环境支持动态语言在开发的时候,提供智能枚举。(运行调式的时候,VS.NET还是可以基本枚举对象的成员)。

所以要在开发期提供快速查找对象的的语言,尽可能选择静态语言。

动态解析
动态语言,一般都是动态解析的。包括那些没有实现动态功能的脚本语言(如php)。动态分析脚本然后生成本机2进制指令,并运行。静态语言一般都需要通过编译器直接编译成CPU指令或脱离与CPU的虚拟指令码(JAVA、NET)。编译之后的对象类型基本就固定了。这也是集成IDE环境能枚举成员对象的原因。运行时,每个对象类型也是固定的了(即使是接口或抽象类,虽然可以改写,但原型也固定了)。而动态语言中的对象。是一个可以幻化的精灵。谁也不知道你下一次调用它的时候,它是什么样子。看看下面的JS代码

  var  anObject  =   {} ;   // 一个对象
    anObject.aProperty  =   " Property of object " ;   // 对象的一个属性
    anObject.aMethod  =   function () {alert("Method of object")} // 对象的一个方法
     // 主要看下面:
    alert(anObject[ " aProperty " ]);    // 可以将对象当数组以属性名作为下标来访问属性
    anObject[ " aMethod " ]();           // 可以将对象当数组以方法名作为下标来调用方法
     for var  s  in  anObject)            // 遍历对象的所有属性和方法进行迭代化处理
        alert(s  +   "  is a  "   +   typeof (anObject[s]));

强类型、弱类型
当语言中的对象类型可以互相,隐式转换的时,则可称改语言为弱类型,大部分的动态语言都为弱类型。但是Python是强类型的动态语言。静态语言多为强类型。若对象不是其原型或兼容类型(如其派生的类型),则无法强制或隐式转换。将基类形转换为派生类型,需要强制转换!派生类型可以隐式转换成基类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值