强类型是否意味着类型安全?

时间:2012-05-29 15:05:43

标签: types strong-typing

我正在复习编译器课程的讲义,其中一张幻灯片说:

  

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

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

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

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

Wikipedia's example of strong typing

1 个答案:

答案 0 :(得分:2)

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

在类型理论中,从未使用术语“强类型”。相反,人们会谈到声音类型的系统。此外,任何不合理的打字规则通常都不被视为适当的类型系统。

在非正式使用中,“强类型”也适用于“动态类型”语言,从理论角度来看,这种语言甚至更不合理。在类型理论的术语中,这些语言甚至都没有输入。

很久以前,Luca Cardelli通过区分两个独立的维度(类型/无类型和安全/不安全),引入了更为一致的语言安全分类。程序集是无类型且不安全的,C是键入但不安全的,JavaScript是无类型的但是安全的,Java或ML是键入的并且是安全的。参见例如http://www.lucacardelli.name/Papers/TypeSystems.pdf