关于编程语言的typing(一些基本概念)


原文地址,编程大牛

http://www.blogjava.net/sean/archive/2009/09/28/296825.html

最近围观一本JavaScript的书籍引发的争论,一不小心碰到一篇讲编程语言类型系统划分的帖子,回想起当年还在公司内部的Tech Session上主讲过这个话题,不过只涉及到静态/动态、强类型/弱类型,远没有这位仁兄总结的那么全面。


原文链接
http://www.reddit.com/r/programming/comments/63tnv/bruce_eckel_33104_im_over_it_java/c02qx55

不多废话,直入正题:

[维度一] Static vs Dynamic Typing
静态类型和动态类型,区分的关键点为编译期或运行期确定类型:静态类型在编译期确定,动态类型在运行期确定。
静态类型代表 Java、Scala、Haskell
动态类型代表 Ruby、Python、Erlang

[维度二] Strong vs Weak Typing 
强类型和弱类型,区分的关键点为运行时是否自动转换到与实际类型不符的类型:强类型要求手工类型转换,弱类型自动转换。
强类型代表 Java、Scala、Python
弱类型代表 C、Assembly、JavaScript

[维度三] Latent (Implicit) vs Manifest (Explicit) Typing
隐式类型和显式类型,区分的关键点为是否要在源码中声明类型:隐式类型不需要,显式类型需要。
隐式类型代表 Haskell、Erlang、Python
显式类型代表 C、C++、Java

[维度四] Nominal vs Structural Typing
名义类型和结构类型,区分的关键点为类型判定是根据标称还是根据内容:名义类型根据标称,结构类型根据内容。
名义类型代表 C、C++、Java 
结构类型代表 Haskell、Erlang、Python

关于JavaScript书籍的争论,请移步如下网址:
1- 网友Hax的"炮轰"帖  http://www.javaeye.com/topic/474725
2- 周爱民(aimingoo)的MSN空间  http://aimingoo.spaces.live.com/blog/
3- 火星常驻JE办事处相关帖  http://mars.group.javaeye.com/group/topic/14325
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值