安全,有了类型系统以后就可以实现类型安全,这时候程序就变成了一个严格的数学证明过程,编译器可以机械地验证程序某种程度的正确性,从而杜绝很多错误的发生。
正面例子:Haskell、Rust
反面例子:C,动态语言
抽象能力,在安全的前提下,一个强大的类型系统的标准是抽象能力,能将程序中的很多东西纳入安全的类型系统中进行抽象,这在安全性的前提下又不损耗灵活性,甚至性能也能很优化。动态语言的抽象能力可以很强,但安全性和性能就不行了。
泛型、高阶函数(闭包)、类型类、Monad、Lifetime(Rust) 属于这一块。
工程能力,一个强类型的编程语言比动态类型的语言更适合大规模软件的构建,哪怕不存在性能问题,但是同样取决于前两点。
对于编译器来说能清楚程序的意图,对于人来说也是如此 。一个函数或者类似的东西,说白了就是一个映射关系,Python 中这些映射关系都是没有很明显的约束,要靠约定和默契才能维持,对大型软件来说这是不行的。一个优秀的强类型的程序,很多函数都不需要文档,光看函数申明就可以了。而在安全的前提下的抽象,也是不容易引发灾难的。
作者:匿名用户
链接:https://www.zhihu.com/question/23434097/answer/42374622
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。