0

我并不是说静态类型是最好的,只是想知道它到底有什么优势。我以为他们是:

  • 更快的代码
  • 尽早发现一些错误

看看我自己的使用(在 Java 中),我主要为编译器工作。当它捕获到类型错误时,通常只是类型中的错误中的错误,而不是代码错误 - 事实上,我不记得它曾经捕获过实际的错误(尽管它可能有)。

有时,我会通过代码来收紧类型——例如,可能有一组类实现了某个接口 I,因此可以容纳任何这些类的字段被赋予类型 I。但这可以结束-broad:有时还有一些字段只能包含这些类的一个子集,因此可以通过创建一个新接口 J 来收紧类型系统,该接口仅由该类的子集实现,并且这些字段被赋予类型 J。虽然这更“正确”,它非常乏味,如果发生变化,它会很脆弱。

所以,我认为更快的代码是主流编译语言(Java、C#、C、C++、objective-C)中静态类型的主要好处,而类型安全则远在第二位——尽管也有一些领域是类型安全的非常有用,例如用于集成电路验证的 ml 语言。我还听说静态类型在数据库中很重要。

但我认为还有另一个优势:

  • 文件

您可以查看方法并了解有效参数的文档。对于自动生成的文档,参数类型超链接到可用的接口和实现。我不认为这是一个杀手锏,但它是真实的。

显然,python 和 ruby​​ 等在没有静态类型的情况下做得很好。我只是想知道它的优点是什么-您怎么看?你有什么经验?

4

2 回答 2

4

Java 静态类型系统是一种不具表现力的、过时的静态类型方法,已经过时了将近 40 年。现代静态类型允许代码应满足的不变量的丰富规范,机器能够为这些不变量提供证明。Haskell、Agda 和 ADA 等语言说明了如何使用类型以相对较低的成本(与例如测试相比)进行严格的软件验证。

因此,除了为编译器提供更多信息的明显好处,导致比没有静态类型更快的代码,事实是现代类型系统是计算机辅助验证软件的重要工具。如果您使用的唯一类型系统是 Java,您将看不到的东西。

于 2012-09-12T12:54:18.460 回答
0

通过使用静态类型,您可以指示变量中应该预期的数据类型。对于非静态,您必须在执行处理之前检查数据类型。例如,您可能希望将整数传递给您的方法,但没有什么可以阻止某人传入字符串。恕我直言,这是向痛苦的世界敞开大门。

于 2012-09-12T12:51:03.190 回答