Glean 拾遗
最近收录

7 条 · 按时间

09-22

函数着色:async 如何把语言劈成两半

作者用一个自造的“红蓝函数”语言作寓言:每个函数必须选颜色,红函数只能被红函数调用,调用方式更繁琐,且部分核心库函数只有红色。谜底是——红即异步。JS/Node、C#、Dart、Python 都把世界切成同步与异步两半,根因是异步 IO 必须退掉整个 C 调用栈才能回到事件循环,于是回调、promise、async-await、生成器只能把调用栈手工具体化到堆上(CPS 变换)。async-await 治好了“调用很痛”,却没有消除颜色:同步函数返回值,异步函数返回 Future/Task 包装,仍需 await 拆包。Go、Lua、Ruby 靠 goroutine/协程/fiber 挂起整条线程,同步与异步的区分因此消失。C# 若改用线程同样可避开。适合关心并发模型与语言设计的工程师。

journal.stuffwithstuff.com · 20 min · Concurrency · Essay · JavaScript
09-22

效率的滑块:AI 造得出有用之物,造不出意义

编程语言设计师 Bob Nystrom 用两个自己的故事——为岳母手织的围巾、为弟弟写的短片剧本——把「价值」拆成两半:utility(效用)来自物品能做的事,meaning(意义)来自制作者为他人花费的、不可回收的时间,且不可转让。生成式 AI 能把前者放大,却无法生成后者:ChatGPT 或许能在十分之一的时间里写出更好的剧本,但给弟弟的意义也只剩十分之一。作者由此提出一个粗糙模型——效率是滑块,决定成品中效用与意义的配比——并给出选择标准:只需要「能用的东西」时放手用(他引用华盛顿州生态部的招聘启事,其中明确鼓励用 AI 写样板代码、生成测试、做安全重构);涉及人与人的连接时,尽量少让机器介入。他同时承认模型的两个漏洞:刻意加大难度不会线性地增加意义,而制作过程本身也能带来快乐。全文只看个人层面的使用,未涉及 AI 的全局外部性。

journal.stuffwithstuff.com · 16 min · AI · Critical Thinking · Essay
09-20

AI 编程是框架还是库:抽象泄露与认知债务

Piglei 用「框架 vs 库」的区分来审视 AI 编程:框架掌握程序的整体结构,以极低的表面认知成本换取便利,而当下 AI 编程工具正被普遍当作这样的框架使用。文章以 Django REST Framework 为例——继承 ModelViewSet 只需一个 class 加三个属性就能生成整套 CRUD API,但要定制 create 的响应体、或给 list 加过滤条件,就得重写 get_queryset 等多个方法并堆上 if/else 补丁;改用不含魔法的 ViewSet 后代码变长,被藏起来的认知债务却浮出水面。作者认为框架的两个固有问题在 AI 编程上同样成立:抽象泄露(自然语言提示词失灵时,只能撕开抽象、精确到变量名去定位根因)与控制权丧失(Vibe Coding 把结构决策全交给 Agent)。他的建议是把 AI 当库用:寻找提示词的甜蜜区而非追求绝对最少的提示词,作为总设计师关注程序结构并把约束写进 AGENTS.md,并审查 AI 生成的代码。适合正在把 AI 引入日常开发的工程师。

www.piglei.com · 4 min · AI Engineering · Code Review · Essay
09-16

20 年工程生涯的 20 条经验,作者先标注了适用边界

Simple Thread 联合创始人回顾 20 年工程生涯,先交代自己的经验边界:前半段在小公司和创业团队,之后做咨询接触大企业,再把公司从 2 人带到 25 人,因此这些判断都带有『人少、要交付、还要维护老系统』的前提。文中 20 条多半反直觉:最难的是做对的东西而非写好代码;最好的代码是不用写的代码;系统终将变烂,该追求可持续改进而非完美;10x 程序员是神话,真正该做的是别让 0.1x 程序员进团队;数据比代码库活得更久;面试几乎无法预测一个人是否是好的队友;技术选型要看存活多年的『鲨鱼』而非新潮工具。适合希望校准自己工程判断的一线开发者,也可当团队讨论素材。

www.simplethread.com · 14 min · Career Advice · Engineering Culture · Essay
09-15

好代码容易删掉,而不是容易扩展

作者主张把代码行数视为“花掉的行数”而非“产出的行数”:每行代码都要持续支付维护成本,而为提高复用率构建的抽象会把调用方绑死在实现的显式与隐式行为上,让后续变更代价更高。因此目标应是可删除(disposable),而非可复用、可扩展。文中给出递进策略:能不写就不写;先复制粘贴几次再提取函数;把无状态、与应用无关的代码放进 util 并一工具一文件;接受 boilerplate 换来的灵活性;像 requests 包住 urllib3 那样把 policy 与 protocol 分层;允许业务逻辑先做成一坨泥巴;按“不与谁共享”而非功能拆分模块;用统一接口、HTTP 缓存与 CDN、feature flag 制造可替换点;错误处理放在端到端的最外层,如同 Erlang 监督树用 fail-fast 重启替代就地恢复。适合维护长期演进代码库的工程师与设计者。

programmingisterrible.com · 20 min · API Design · Code · Essay
09-14

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

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
09-08

软件还有手艺吗:Bun 迁 Rust、AI 代工与工业化的未来

本文由 2026 年 Bun 从 Zig 迁移至 Rust、以及 Andrew Kelley 与 Jarred Sumner 的公开争执切入,追问软件生产究竟是手艺(craft)还是工业。作者串联 tabs vs spaces 争论、自动格式化兴起、Go 语言设计背后的“去技能化+劳动强化”、Clojure 式手工理想,以及木工职业者与爱好者的分工,并以美国安全带强制立法历史比喻类型系统和 Rust 借用检查。他认为 slop 本质是主观判断,并预言 coding agent 会加速软件工业化:语言锁定消退、手写代码被自动重写、质量被量化并自动化。文章证据以史料和引文为主,非实操指南,适合关心 AI 编程浪潮下工程文化变迁的工程师阅读。

newsletter.powderworks.dev · 76 min · AI Engineering · Claude Code · Essay