我还想补充一点,虽然没有算法可以证明软件的正确性,但如果您正确使用正确的工具,您可以拥有非常严密的软件。我首先想到的是 SPARK (http://en.wikipedia.org/wiki/SPARK_(programming_language) ),它是 Ada 的一个子集,可以用来正式证明软件的正确性。当然,您可能会在代码的正式规范中犯错误,但我认为在代码和规范中犯两个互补错误的概率(以便它们通过正式检查)非常低...
发表的评论
我还想补充一点,虽然没有算法可以证明软件的正确性,但如果您正确使用正确的工具,您可以拥有非常严密的软件。我首先想到的是 SPARK (http://en.wikipedia.org/wiki/SPARK_(programming_language) ),它是 Ada 的一个子集,可以用来正式证明软件的正确性。
当然,您可能会在代码的正式规范中犯错误,但我认为在代码和规范中犯两个互补错误的概率(以便它们通过正式检查)非常低...