“我们如何检测软件应用程序的语义错误?有可能消除软件应用程序的所有可能的错误吗?”
答案 0 :(得分:0)
编译器必须覆盖语法错误。
难以解决的语义错误。
许多语言都有lint设施。
类绒毛的工具对于JavaScript和Python等解释型语言特别有用。由于此类语言缺少在执行之前显示错误列表的编译阶段,因此这些工具还可以用作常见错误(例如语法差异)以及难以发现的错误(例如heisenbugs)的简单调试器(提请注意)可疑代码作为“可能的错误”)。类似于Lint的工具通常会对源代码执行静态分析。
您可能想研究Correctness的概念。
在理论计算机科学中,当说算法相对于规范是正确的时,就断言了算法的正确性。功能正确性是指算法的输入输出行为(即,对于每个输入,它都会产生预期的输出)
在实践中,不可能消除所有语义错误。例如,
j = i + 1
和
i = i + 1
在几种不同语言上在语法上是正确的。从语义上讲,在适当的情况下,它们也是正确的。但是程序员可能只打算一个,而没有另一个。对该意图的检测以及是否可以检测,是程序正确性的核心。