Python 3.10 模式匹配的黑暗魔法:利用__subclasshook__实现奇技淫巧

2025-08-22

本文介绍了Python 3.10中模式匹配与抽象基类(ABC)的`__subclasshook__`方法结合产生的意想不到的特性。作者通过巧妙地利用`__subclasshook__`,实现了对模式匹配的“劫持”,可以自定义哪些类型匹配成功,甚至可以根据对象属性进行匹配,而非仅仅依靠类型。虽然作者展示了这种技术的强大功能,例如创建自定义匹配器,但同时也警告读者这种技术非常危险,不建议在实际项目中使用。

阅读更多
开发 抽象基类

那些影响深远的“已死”编程语言

2025-07-16

本文探讨了历史上一些虽已不再流行却影响深远的编程语言,例如COBOL、ALGOL、APL、BASIC等。作者通过分析这些语言的背景、意义和衰落原因,揭示了它们对现代编程语言的深远影响,例如COBOL的记录数据结构、ALGOL的词法作用域和结构化编程,以及APL的数组处理等。文章强调了编程语言历史研究的重要性,以及那些未被广泛知晓但对编程发展做出重大贡献的语言。

阅读更多

关于面向对象编程的起源:一场持续的误解

2025-05-10

本文驳斥了Alan Kay发明面向对象编程(OOP)和对象的常见误解。实际上,Simula语言是OOP的重要先驱,Smalltalk团队也明确承认了Simula的影响。虽然Kay创造了“对象”一词,但他后来表示后悔使用这个词,并强调消息传递才是OOP的核心思想。文章进一步探讨了Smalltalk在OOP发展中的独特贡献,特别是其将所有元素都视为对象的设计理念,以及其对消息处理机制的创新。作者认为,OOP的演变并非单一来源,而是多种思想和需求的融合,不同开发者在不同场景下对OOP的理解和应用也不尽相同。

阅读更多
开发

JavaScript 注释的奇特历史:为什么`<!--`和`-->`也能注释代码?

2025-03-12

这篇文章揭秘了 JavaScript 中 `` 作为注释符的奇特历史。最初,为了兼容旧版浏览器,开发者会在 `` 标签内使用 HTML 注释包裹 JavaScript 代码。令人意外的是,现代浏览器仍然支持这种语法,这源于浏览器兼容性的历史包袱和标准化委员会对“不破坏网络”的承诺。文章解释了这种语法如何工作,以及为什么 `-->` 只能出现在行首。

阅读更多
开发

软件工程中的控制层级:从生产事故中吸取教训

2025-03-08

一位机械工程师向作者介绍了控制层级(HoC)的概念,这在工作场所安全中至关重要。作者将HoC应用于软件工程,以分析自己十年前因错误操作导致的生产数据库故障。文章探讨了在软件开发中如何应用消除、替代、工程控制、管理控制和个人防护装备(PPE)等不同层级的控制措施来降低风险,并指出每个层级都有其优缺点和潜在的局限性,例如,过于严格的访问策略可能会延缓问题解决。最终,作者强调了需要全面考虑控制措施对系统安全的影响,避免引入新的风险。

阅读更多
开发

1/0 = 0?探讨除以零在数学中的定义

2024-12-02

本文探讨了在数学中定义1/0=0的可能性。作者首先解释了数学中“一致性”的概念,然后介绍了域的概念及其属性。接着,作者讨论了除法的定义,并指出在标准的实数域中,0没有乘法逆,因此除以0是未定义的。然而,作者认为,可以将除法扩展为定义x/0 = 0,并且这种扩展在数学上是一致的,不会导致矛盾。文章还分析了一些常见的反对意见,并指出这些意见通常基于对除法性质的误解。最后,作者引用了一些数学家和计算机科学家的观点,以支持其论点。

阅读更多
未分类 除法

软件摩擦

2024-06-18

文章阐述了软件开发过程中存在的“摩擦”现象,即理论与现实之间的差异导致的各种问题,例如API变更、bug、安全漏洞、依赖项升级问题、人员变动、需求变更、设备故障等等。作者列举了减少摩擦的方法,包括采用敏捷开发、赋予团队更多自主权、增加冗余、制定更好的计划、自动化流程、积累经验、进行模拟演练以及使用检查清单和运行手册等。

阅读更多
未分类 摩擦