1

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

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

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

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

那么有什么关系呢?幻灯片是错的,还是我错过了什么?

维基百科的强类型示例

4

1 回答 1

2

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

在类型论中,从不使用术语“强类型”。相反,有人谈到健全的类型系统。此外,任何不健全的打字规则通常根本不被认为是适当的类型系统。

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

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

于 2012-05-29T17:55:40.690 回答