提升代码效率的秘密武器:代码证明

2025-07-16

本文介绍了一种提高代码编写速度和准确性的技巧:在编写代码时进行“在线”证明,即在不中断代码编写流程的情况下,在脑中证明代码的正确性。作者介绍了几种辅助证明的方法,例如关注代码的单调性、使用前置条件和后置条件、维护不变式以及隔离变化的影响范围。此外,作者还强调了归纳法在处理递归函数和数据结构时的作用,并建议将“证明亲和性”作为衡量代码质量的标准。最后,作者建议通过练习编写数学证明来提高代码证明能力。

阅读更多
开发 代码证明

从零开始烘焙Y组合子:第一部分—不动点组合子

2025-04-09

本文深入探讨了Y组合子,一种在不允许多次自我引用的函数式语言中实现递归的数学结构。文章首先解释了不动点概念,然后逐步推导Y组合子的公式,并解释了其自复制机制。通过对Ω组合子的分析,作者阐明了Y组合子如何通过运行时自我复制来避免无限嵌套。文章还简要介绍了λ演算和形式系统,为后续深入理解Y组合子奠定基础。

阅读更多
开发

用布尔代数解开迷宫里的逻辑谜题

2025-03-06

本文讲述了利用布尔代数解决《迷宫》电影中经典的骑士与小人逻辑谜题。作者通过建立布尔代数模型,用A表示答案,Q表示问题的正确答案,G表示说话者是否说谎,推导出A = G⊕Q。通过巧妙地设计问题,将另一个小人的说谎属性引入模型,最终简化方程,解出谜题。作者认为,形式化的方法能够清晰地展现解题步骤,并强调了形式系统作为推理工具的效用。

阅读更多
杂项 布尔代数