关于强弱,静动语言类型的思考

看了社区有很多人讨论这个,就把自己知道的写出了,做个总结,也许不是绝对的准确,可能高手会有更独特的见解,欢迎在此评论。

先说强弱:

有强必有弱,这是一个相对的概念。

所谓强类型语言(比如C/C++/JAVA/Python/etc...)是说的类型是独立,它不轻易转化,转化就要比较多的条件才能实现,在语法上可能需要一定的指示(比如 (type )another type)。注是可能但不是绝对要强制才能转换,比如把一个char型的值赋给一个int型的整数,这就不需要(int)强制执行。

所谓弱类型语言(比如JavaScript/Unix Shell/etc...)是说类型不会严格区分,但也要满足相对强类型少的条件才能转换。从底层看就是关于容量大小的说法,Atype change into  Btype 那么B类型就要有能容下A类型最大开销的所需空间。从OOP的观点看,两种类型接口要相同才叫类型兼容,只有兼容的类型间可能转换(可能会丢失部分数据)

再说静动:

静,就是安静,稳定,预先的意思;而动就是运动,活泼,变化的意思。

所谓静态类型语言(比如C/C++/JAVA/C#/etc...),就是它的类型编译时就判断,因此要预先定义且要指定其类型,这样编译器就知道对其进行如何的操作才算合法。所以,一般的静态类型语言是强类型的。

所谓动态类型语言(比如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/etc...),就是它的类型要等到运行时才判断,这就为其可能成为弱类型语言提供了基础,但不是所有动态类型语言都是弱类型的,相反很多(大部分)都是强类型的。比如Python是我用的面向对象最好的语言,就是强类型的。因为要遵照面向对象的观点来设计对象的。

相对而言,动态类型语言更接近人的思维和生活语言,但执行效率相对低;而静态类型语言输写相对复杂,但执行效率高得多(主要对编译型语言,半编译型相对慢一点)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值