【问题标题】:Is static typing a subset of dynamic typing?静态类型是动态类型的子集吗?
【发布时间】:2012-03-03 13:57:58
【问题描述】:

我打算将此作为评论添加到我之前关于类型理论的问题中,但我觉得它可能值得自己阐述:

如果你有一个动态类型系统,你给每个对象添加一个“类型”成员,并在对对象执行函数之前验证这个“类型”是一个特定的值,这与静态类型有什么不同? (除了它是运行时而不是编译时的事实)。

【问题讨论】:

    标签: dynamic types static


    【解决方案1】:

    静态类型发生在编译时,而不是运行时!而这种差异是必不可少的!

    请参阅 B.Pierce 的书 Types and Programming Languages 了解更多信息。

    【讨论】:

    • 嗯,是的,我提到过。这是唯一的区别,还是有更深层次的理论区别?
    • 但这种差异是深刻的和理论上的。
    • 啊,我相信这就是我想要的。谢谢!
    • ...你不会碰巧有它的摘要吧? (别担心——我会抽空阅读它)。
    【解决方案2】:

    从技术上讲,实际上是相反的:“动态类型”语言是静态类型语言的一种特殊情况,即只有一种类型(在数学意义上)。这至少是类型系统社区中许多人的观点。

    关于静态与动态检查的编辑:只能动态检查本地属性,而需要某种全局知识的属性不能。考虑一些属性,例如某些东西是唯一的、没有别名的东西、没有竞争条件的计算。一个合适的静态类型系统可以验证这些属性,因为它能够在被检查的表达式的上下文中建立某些不变量。

    【讨论】:

      猜你喜欢
      • 2020-07-29
      • 2010-12-02
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      • 2020-03-20
      • 1970-01-01
      相关资源
      最近更新 更多