我并不是说静态类型是最好的,只是想知道它到底有什么优势。我以为他们是:
- 更快的代码
- 尽早发现一些错误
看看我自己的使用(在 Java 中),我主要为编译器工作。当它捕获到类型错误时,通常只是类型中的错误中的错误,而不是代码错误 - 事实上,我不记得它曾经捕获过实际的错误(尽管它可能有)。
有时,我会通过代码来收紧类型——例如,可能有一组类实现了某个接口 I,因此可以容纳任何这些类的字段被赋予类型 I。但这可以结束-broad:有时还有一些字段只能包含这些类的一个子集,因此可以通过创建一个新接口 J 来收紧类型系统,该接口仅由该类的子集实现,并且这些字段被赋予类型 J。虽然这更“正确”,它非常乏味,如果发生变化,它会很脆弱。
所以,我认为更快的代码是主流编译语言(Java、C#、C、C++、objective-C)中静态类型的主要好处,而类型安全则远在第二位——尽管也有一些领域是类型安全的非常有用,例如用于集成电路验证的 ml 语言。我还听说静态类型在数据库中很重要。
但我认为还有另一个优势:
- 文件
您可以查看方法并了解有效参数的文档。对于自动生成的文档,参数类型超链接到可用的接口和实现。我不认为这是一个杀手锏,但它是真实的。
显然,python 和 ruby 等在没有静态类型的情况下做得很好。我只是想知道它的优点是什么-您怎么看?你有什么经验?