【问题标题】:How do we detect semantic errors of software application?我们如何检测软件应用程序的语义错误?
【发布时间】:2019-07-14 11:25:36
【问题描述】:

“我们如何检测软件应用程序的语义错误?是否可以消除软件应用程序的所有可能错误?”

【问题讨论】:

    标签: semantics


    【解决方案1】:

    编译器必然会覆盖语法错误。

    语义错误更难解决。

    许多语言都有lint 设施。

    类似 Lint 的工具对于 JavaScript 和 Python 等解释型语言特别有用。由于此类语言缺乏在执行前显示错误列表的编译阶段,因此这些工具也可用作常见错误(例如语法差异)以及难以发现的错误(如 heisenbugs)的简单调试器(提请注意可疑代码为“可能的错误”)。类似 Lint 的工具通常对源代码进行静态分析。

    您可能需要检查Correctness 的概念。

    在理论计算机科学中,当算法相对于规范正确时,该算法的正确性就被断言。功能正确性是指算法的输入输出行为(即,对于每个输入,它都会产生预期的输出)

    在实践中,不可能消除所有语义错误。例如,两个

    j = i + 1
    

    i = i + 1
    

    在几种不同的语言中在语法上是正确的。在适当的上下文中,它们在语义上也是正确的。但是程序员可能想要一个,而不是另一个。检测该意图以及是否可以检测到,是程序正确性的核心。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      • 2012-05-31
      • 2017-01-29
      • 2011-01-06
      • 2012-04-17
      • 1970-01-01
      相关资源
      最近更新 更多