Glean 拾遗
日刊 · 时间线

每天拾几条。

2026-09-15 · 周二 3 条
← 09-14
日历 ▾
2026 · 09
MoTuWeThFrSaSu ·123456789101112131415161718192021222324252627282930
有日刊 今天
06:00

抽象必漏:TCP、SQL 与 C++ 字符串的同一课

The Law of Leaky Abstractions

Joel Spolsky 从 TCP 讲起:TCP 承诺可靠、有序、不损坏的传输,底层却是会丢包、乱序、损坏的 IP,靠重传和重排把不可靠伪装成可靠——这就是抽象。文章的核心论断是:所有非平凡的抽象都会泄漏。二维数组按行还是按列遍历,缺页次数可能差出几个数量级;逻辑等价的 SQL 多加一句 a=c 可能快上千倍;C++ string 类再努力也写不出 "foo" + "bar",因为字面量永远是 char*;NFS 挂载的 home 目录在服务器宕机时会让 .forward 邮件直接丢失;ASP.NET 用一段 onclick JavaScript 假装超链接能提交表单,用户禁用 JS 就全线失效。结论对工程师有实际后果:抽象省下写代码的时间,不省学习的时间;工具层次越高,出问题时越需要往下钻。适合做系统、工具链和框架的一线工程师。

www.joelonsoftware.com · 12 min · Abstractions · Essay · Software Engineering · SQL · TCP/IP
06:00

写软件的十一条原则:先数据,后代码

My Principles for Building Software

作者列出自己构建软件时遵循的一组原则,主线是让系统更简单:让非法状态无法表示、保证数据一致性、先设计数据再写代码、测量之后再优化。文中用一个数据库例子说明不一致的代价——必须保持 x=y 的两个布尔变量一旦拆到不同库、无法原子更新,数据就多出两种状态,toggle 函数在这些状态下没有正确答案。作者认为一致性是当下最被低估的工程原则,多数问题本质上都是数据不符合预期;他同时主张代码一致性优先于局部「正确」,学习应聚焦 concepts(关系模型、代数数据类型、borrow checker、Curry-Howard 同构)而非 React、Kubernetes 的表层细节。适合做后端与数据系统设计、正在权衡微服务拆分和 schema 取舍的工程师。

kevinmahoney.co.uk · 9 min · Database · Programming Languages · Software Engineering · System Design
06:00

把知识写下来:一位 CTO 的文档优先实践

Healthy Documentation: A CTO's Case for Docs-First Engineering

一位创业公司 CTO 复盘自己推行“文档优先”的整套做法:用一页纸代替半小时站会、把文档工时显式写进排期、给每个 feature 合并时附一段“为什么选 X 不选 Y”。他也承认过度文档会反噬(过时页面比没有更糟),因此只记录能活过一个季度的 80% 内容,并用一条轻量 CI 检查强制新埋点必须配 wiki 条目。文中给出 ADR、incident post-mortem、Diátaxis、docs gardener 等具体机制,适合正在搭建工程规范的中小团队负责人与一线工程师参考。