使用强类型语言进行编码时,静态检查是否提供了超过动态代码分析的独特优势?

时间:2015-03-24 19:31:47

标签: code-analysis

当使用被认为是强类型的语言时,静态代码分析是否提供动态代码分析无法做到的任何事情?

1 个答案:

答案 0 :(得分:1)

要回答您的问题,执行静态检查的强类型语言会带来好处。

<强>为什么吗

作为一个例子,考虑一种执行静态类型检查的编程语言(像OCaml这样的函数式语言),而不是像Python那样进行动态类型检查的语言。

静态类型检查允许在运行时执行代码之前类型安全。而动态类型检查仅在运行时检查类型安全

这意味着如果您没有在执行静态类型检查的语言中使用正确的类型,则会在编译时捕获它,并且不会执行一点都不它将在代码运行之前捕获所有这些类型错误。如果它没有遇到任何问题,那么它才会执行。

另一方面,在动态类型语言中,即使存在未解析的类型错误,它也会编译并执行,并且在执行期间,如果遇到类型错误则无法解析,它将抛出一个异常并退出。

在小程序中,这些看起来并没有什么大的区别,但是如果你大规模地考虑它,如果你的程序需要很长时间来计算某些东西,并且使用动态类型语言,那么只能捕获错误。执行结束,你只是浪费了大量的时间和资源吗? (至少这是一个帮助我理解动态代码分析所带来的好处的例子)

如果你想知道,Java是一种强类型语言。 SO Q&A on whether C is strongly typed or not

强/弱类型语言与静态/动态语言之间存在细微差别。强弱类型是指如何严格的语言与其类型。静态/动态是 时需要它。 (编译时间或运行时) Source

希望能回答你的问题!

一些参考文献: (是维基百科不是参考,但它给出了本案例IMO的最佳例子)

Static type checking

Dynamic Programming Languages

Why Python is dynamic but also strongly typed