分享

从一段对话也看强类型系统

 Alex847 2009-11-25
这是前几天一个面试中的片段,对于强/弱类型语言说一下自己的理解,希望对大家有帮助,有兴趣也可以共同探讨。
......
PM:我看到你这个强类型系统问题答得很好,能够谈一下为什么想到分两个方面强类型和弱类型来回答呢?
Interviewer:强类型系统是对语言而说的,对应的两个方便,说了强自然就说出弱类型了。
PM:那你能说一下这两种类型的区别吗?
Interviewer:强类型是已经定义好的类型,如C,C++,C#,Java等都是强类型的语言,但javascript是弱类型语言。
PM:各有什么好处呢?
Interviewer:强类型,已经定义好的类型,如果类型不一致就可以即时检测出来,弱类型就没有明确说明是什么类型,给什么样的就是什么数据类型,强类型应该执行速度比较高点吧,弱类型在执行的时候需要进一步的判断(不确定的声音)。
PM:那这么说来,强类型比较好了,为什么弱类型还要存在呢?
.......
我也在想有了强类型为什么还要存在弱类型呢?
毋庸置疑,弱类型有它存在的理由,就像C语言的出现,在编程上不能满足于是有了C++,Java,C#,这些强大的语言出现并流行了,但C语言并没有淘汰,比如一些底层,嵌入式的开发缺了它不可。
强类型的语言如int i ;我们给i赋值1即:i = 1;这是没有任何问题的,但如果给i赋值张三i = "张三";则编译器就会报错给我们。所以在.netframework中有CTS(通用类型系统),需要的数据类型定义好,这样如果你的赋值不正确,编译就会出错,从这个意义上来说强类型语言执行的速度确实是要高的,而且它是安全的!
那么我们使用弱类型语言来定义,var i;我们可以给i赋值数字也可以是字符。i = 1或者i= "张三";编译器不会有错。那么这个变量只有在执行的时候编译器才会知道这个变量是什么数据类型,所以在执行的速度上弱类型语言确实低于强类型语言。好处都让强类型抢光了,好像弱类型真的是没有存在的必要了。
那么我们从另外一个方面来看,如果一个数据,我们在开始的时候不知道它具体是什么类型,只有在运行的过程中我们才能够明白,这个时候你定义成int,string或者其他数据类型,好像都不太合适,那么选用弱类型吧,你赋给神门数据类型就存了什么样的数据类型。根据这样的特性我们又给了它一个特征“动态语言”。
 
现在大家应该能够理解强类型和弱类型的区别了吧,强类型是安全的数据类型,执行效率高,因为安全,所以不能随便赋值;弱类型执行性能上稍逊于强类型,但它是动态的!声明一个弱类型的变量,你可以放string也可以放int或者其他的空间,类类型。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wangxia0557/archive/2009/09/26/4596211.aspx

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多