当使用被认为是强类型的语言时,静态代码分析是否提供动态代码分析无法做到的任何事情?
答案 0 :(得分:1)
要回答您的问题是,执行静态检查的强类型语言会带来好处。
<强>为什么吗
作为一个例子,考虑一种执行静态类型检查的编程语言(像OCaml这样的函数式语言),而不是像Python那样进行动态类型检查的语言。
静态类型检查允许在运行时执行代码之前类型安全。而动态类型检查仅在运行时检查类型安全。
这意味着如果您没有在执行静态类型检查的语言中使用正确的类型,则会在编译时捕获它,并且不会执行一点都不它将在代码运行之前捕获所有这些类型错误。如果它没有遇到任何问题,那么它才会执行。
另一方面,在动态类型语言中,即使存在未解析的类型错误,它也会编译并执行,并且在执行期间,如果遇到类型错误则无法解析,它将抛出一个异常并退出。
在小程序中,这些看起来并没有什么大的区别,但是如果你大规模地考虑它,如果你的程序需要很长时间来计算某些东西,并且使用动态类型语言,那么只能捕获错误。执行结束,你只是浪费了大量的时间和资源吗? (至少这是一个帮助我理解动态代码分析所带来的好处的例子)
如果你想知道,Java是一种强类型语言。 SO Q&A on whether C is strongly typed or not
强/弱类型语言与静态/动态语言之间存在细微差别。强弱类型是指如何严格的语言与其类型。静态/动态是 时需要它。 (编译时间或运行时) Source
希望能回答你的问题!
一些参考文献: (是维基百科不是参考,但它给出了本案例IMO的最佳例子)