【问题标题】:Does strong typing imply type safety?强类型是否意味着类型安全?
【发布时间】:2012-05-29 15:05:43
【问题描述】:

我正在查看编译器课程的讲义,其中一张幻灯片显示:

强类型语言保证接受的程序是类型安全的

但是,我在其他地方找不到任何证据。

例如,维基百科将 c++ 列为强类型语言,但也将 c 列为类型不安全的语言。

那么交易是什么?幻灯片是错的,还是我遗漏了什么?

Wikipedia's example of strong typing

【问题讨论】:

  • C++ 不是强类型的。您能否附上您阅读本文的链接?
  • C++ 的类型系统比 C 强得多。
  • @ControlAltDel 你是对的。后来幻灯片将 C++ 定义为弱类型。可能,维基百科只是将 C++ 称为一种使用示例中类型安全代码的语言。
  • @larsmans C 的类型系统不是包含在 C++ 中吗?在我看来,唯一的区别是 C++ 的标准库比 C 等价物更倾向于支持更多类型安全的实现?
  • @larsmans c 和 c++ 之间的区别在于类 / OOP。否则,处理类型没有区别

标签: types strong-typing


【解决方案1】:

“强类型”不是一个定义非常明确的概念。最好将其解释为更准确的内存安全的同义词(即,程序永远不会通过未定义的行为破坏自己的内存)。

在类型理论中,术语“强类型”从未使用过。取而代之的是 sound 类型的系统。此外,任何不健全的打字规则通常根本不被视为适当的类型系统。

在非正式用法中,“强类型”也适用于“动态类型”语言,从理论上讲,这更没有意义。在类型论的术语中,这些语言甚至没有类型。

很久以前,Luca Cardelli 通过区分两个独立的维度引入了更连贯的语言安全分类:类型化/非类型化和安全/不安全。汇编是无类型且不安全的,C 是有类型但不安全的,JavaScript 是无类型但安全的,Java 或 ML 是有类型且安全的。参见例如http://www.lucacardelli.name/Papers/TypeSystems.pdf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2019-08-16
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    相关资源
    最近更新 更多