“我们如何检测软件应用程序的语义错误?有可能消除软件应用程序的所有可能错误吗?”
发布于 2019-07-14 19:56:06
编译器必然会覆盖语法错误。
语义错误更难解决。
许多语言都有lint工具。
Python类工具对于像JavaScript和
这样的解释型语言特别有用。因为这样的语言缺乏在执行前显示错误列表的编译阶段,所以这些工具还可以用作常见错误(例如语法差异)以及难以找到的错误(例如heisenbugs )的简单调试器(将注意力吸引到可疑代码,将其视为“可能的错误”)。类Lint工具通常执行源代码的静态分析。
您可能想研究一下Correctness的概念。
在理论计算机科学中,当说算法相对于规范是正确的时,就断言算法的正确性。功能正确性指的是算法的输入-输出行为(即,对于每一个输入,它产生预期的输出)
在实践中,不可能消除所有的语义错误。例如,两者都
j = i + 1和
i = i + 1在几种不同的语言中都是正确的。在适当的上下文中,它们在语义上也是正确的。但是程序员可能想要其中一个,而不是另一个。这种意图的检测,以及它是否可检测,是程序正确性的核心。
https://stackoverflow.com/questions/57026977
复制相似问题