在添加新功能之前,作者优先简化了底层代码,以便更容易扩展。他们将编程视为两个部分:定义*需要做什么*,以及*如何高效地表达它*。然而,真正的效率并非关于优化的代码速度,而是最小化整个开发生命周期中的*人力成本*——包括打字、调试、修改和适应。 作者提倡一种“压缩导向”的方法,类似于字典压缩器如PKZip。他们不是预先创建可重用的代码,而是首先专注于编写特定的解决方案。可重用性是在*识别出重复代码之后*才出现的——有效地“压缩”它。这避免了在可能不需要的抽象上浪费精力。 当出现重用机会时,代码要么按原样使用,要么经过深思熟虑地修改/分层。这产生简洁、易读的代码,它反映了问题的自然语言,并且更容易维护和扩展。这种自下而上的方法,从具体细节开始,避免了过早架构规划的陷阱,并最终导向更健壮、更高效的代码库。
## Claude 与《空中大灌篮》:一次复古网页重现尝试
一位拥有计算机科学学位的工程经理尝试使用 Anthropic 的 Claude,根据截图和素材重现 1996 年的《空中大灌篮》网站,希望保存这部分互联网历史。尽管该网站很简单——一个单独的 HTML 页面,严重依赖绝对定位——Claude 反复未能准确地复制它。
最初的尝试表明 Claude 理解了布局的*概念*(行星围绕着标志运行),但难以精确地定位。提供网格叠加和像素坐标参考等工具也无济于事;Claude 会自信地利用这些数据,但仍然生成不准确的结果,似乎优先考虑其自身的内部“理解”,而不是提供的测量数据。
分析表明 Claude 可能以 16x16 像素块处理图像,从而损失了关键的空间细节。放大截图提供了一种潜在的解决方案,但 Claude 仍然无法实现忠实的重现。最终,该实验突出了 Claude 在语义理解方面的优势,但在精确视觉重现方面的劣势,导致了一个自信但不准确的令人沮丧的循环。原始网站仍然未被重现,这证明了即使使用当前 AI 技术复制简单的设计也面临的挑战。
## 傅里叶变换:从冰沙到菜谱
傅里叶变换是一种强大的模式理解工具,但常常被复杂的数学所掩盖。本质上,它将一个复杂的信号(比如冰沙)分解成其基本组成部分(菜谱)。它不是分析整体,而是揭示信号*如何*被创建的——识别每个潜在循环的强度、速度和起点。
想象一下过滤冰沙以提取每种成分。傅里叶变换做的事情与之类似,它测量基于时间模式中的每种可能的循环。这种“循环菜谱”通常比原始信号更容易分析、比较和修改。
至关重要的是,这个过程是可逆的——你可以通过组合这些循环来重建原始信号。核心思想不是关于复数或正弦波,而是关于认识到*任何*模式都可以由圆形路径构建而成。
应用领域非常广泛:从降噪和数据压缩(如MP3)到抗震建筑设计和音乐识别。最终,傅里叶变换提供了一种视角的转变——从*是什么*,到*如何*制作的,揭示了观察到的现象背后的“源代码”。
最近的一次Scala 2.13到3的迁移最初看起来是成功的——编译通过,测试全绿,初步部署也没有问题。然而,在生产环境中几个小时后,出现了一种神秘的性能下降,表现为Kafka延迟增加,尽管数据负载适中。
广泛的调查,包括负载测试和依赖回滚,都未能确定原因。性能分析显示CPU使用情况发生了显著变化:Scala 3版本在JIT编译器中花费了更多时间,并且令人惊讶的是,在Quicklens库中花费了更多时间。
Quicklens中的一个微妙的bug,导致Scala 3中低效的链式求值,被确定为罪魁祸首。升级该库解决了问题,恢复了与Scala 2.13的性能一致性。
关键经验是,看似无缝的迁移可能会隐藏性能回归,尤其是在使用依赖于元编程的库时。即使初步测试看起来成功,对性能热点进行彻底的基准测试也至关重要,以避免在生产环境中出现意外的瓶颈。