Contents

An Introduction To Programming Type Systems比较了一下编程语言中的类型系统。

  • 没类型: 比如汇编语言,没有类型的概念,所有都只是一个数字
  • 弱静态类型: 比如C语言,可以定义类型,但是不强制执行,在不同类型之间自动转换
  • 强静态类型: 比如Java,定义类型,并且用虚拟机检查类型
  • 强动态类型: 比如Python,JavaScript和Ruby,动态推断类型而不需要定义,然后解释器会强制执行。所有的动态语言必须就是强的,因为不然的话就没有办法解析对象类型了。
  • 弱动态类型: 没有。
静态类型说 动态类型说
静态类型编译时就能发现问题,帮你解决麻烦 静态类型只能检查一部分错误,不能只靠编译器来替代测试
静态类型因为显示定义了类型,所以易读 动态类型因为需要写的代码少所以易读
至少我知道我的代码可以编译 能编译不代表能运行
我信任静态类型来保证我的团队写出好的代码 编译器不能阻止你写烂代码
没办法调试一个不知道类型的对象 调试过于复杂的对象等级是不能忍受的
编译器能发现的bug发生上午,在我的公司,运行时bug发生在半夜,客户那里 不能缺少测试,单元测试比编译器更可靠
Contents