Dependency Cultures - Richard Feldman (Software Should Work Conf 2026)

Lobsters Hottest 事件

摘要

Richard Feldman 通过对比不同编程语言网站和游戏的依赖图,指出大部分依赖选择是文化规范而非技术必要性。

<p><a href="https://lobste.rs/s/cxbtfq/dependency_cultures_richard_feldman">Comments</a></p>
查看原文
查看缓存全文

缓存时间: 2026/07/28 16:29

### TL;DR Richard Feldman 通过对比不同编程语言网站和游戏的依赖图,指出大部分依赖选择是文化规范而非技术必要性。 ## 历史对比:从裸机到抽象栈 Feldman 回忆 2006 年左右的创业公司技术栈:自己组装的物理服务器上跑 Debian Linux,Apache HTTP 服务器加 Perl,fork 了 MW 论坛做认证,Postgres、Memcached,用 sendmail 发邮件,前端用 jQuery 和 jQuery UI。那时 fork 很常见。 对比 1996 年的 Viaweb(第一个网络应用),他们用裸机服务器、FreeBSD、Common Lisp 和 C,没有 CSS、JavaScript 或数据库——用平面文件。投资者要求数据库,他们拒绝了。Viaweb 被雅虎收购后,收益资助了 Y Combinator。 如今现代栈:AWS Lambda 上的 Firecracker,Vercel 作抽象,TypeScript 在 Node.js 上,Next.js 混合客户端与服务器状态,Prisma ORM,Neon 分布式 Postgres,Upstash 分布式 Redis,Resend 替代 sendmail,S3+CloudFront,再上层叠 Tailwind CSS、React、Next.js、Tanstack、shad cn/ui 等。许多技术 Feldman 为了演讲才学习。 ## 八个编程语言网站的依赖图 Feldman 比较了 TypeScript、Node.js、Python、Ruby、Rust、Zig、Go、Rock 的官方静态网站(做基本相同的工作:文档、语法高亮、示例)。八个条形图中,一个高度为零像素(无依赖),另一个有近 1800 个依赖(几乎全是间接依赖)。其中有两个网站(TypeScript 和 Rock)在浏览器中运行编译器(不发送到服务器),但它们并不对应最大条形——实际上,TypeScript 和 Rock 的依赖数很小,而巨大的依赖来自 Gatsby(TypeScript 网站用它)。 Feldman 声称:“你需要在你的网站上运行编译器吗?原来不需要,你只需要编译器本身。” 那 1500 多个间接依赖基本来自一个框架的选择。 ## 文化分组 - **npm 阵营**(TypeScript、Node.js):大量直接和间接依赖,比例偏间接。 - **Ruby 和 Rust**:形似,直接少、间接多但远不及 npm。 - 有趣的是 Rust 的包管理器由 Ruby gems 团队协助构建。 - **Python 与 Go**:各具独立哲学,Python 直接:间接近乎 1:1;Go 也有自己风格。 - **Zig 和 Rock**:直接依赖几乎为零,间接部分也很小 —— Zig 编译器用 Zig 编写,Rock 编译器用 Zig 编写,共享文化。 结论:“这些是文化规范,而非技术必要性。” ## 游戏依赖对比 Feldman 选了九款开源/源码可用的游戏,绘制直接与间接依赖图。两个条形巨大(Rust 和 C# 游戏),两个较小,其他接近零。其中两款是同一游戏的重制版:一个在 Rust 生态(约 29 个直接依赖,很多间接),另一个在 C# 生态(30 个直接依赖,间接也很多)。C++ 游戏则完全无间接依赖,直接依赖极低(仅 LLVM 等)。 - **npm 文化**:添加依赖容易,习惯大量间接。 - **C++ 游戏文化**:无标准包管理器,依赖常被 vendored/fork 并进源代码管理,极少间接。 Feldman 认为这解释了为什么同样功能的应用,依赖数可以相差几个数量级——是文化塑造了选择。 ## 技术 vs 文化 Feldman 问:“有多少是技术性的?有多少是文化性的?” 从数据看,同一类功能(静态网站、游戏重制版)天然不需要悬殊的依赖数量。差异主要源于生态习惯:npm 的“万物皆包” vs C++ 的“自给自足”,以及各语言社区的包管理哲学传承。 Source: https://www.youtube.com/watch?v=E82ly38YEEQ

相似文章

认知依赖

Reddit r/singularity

一篇简短的评论文章,探讨依赖AI进行软件开发是否会导致工程师技能退化,并可能造成AI进展停滞,直至递归自我改进(RSI)成为可能。

软件关乎人,而非代码(2020)

Hacker News Top

一篇论述软件成功更多取决于理解人及其需求,而非编写完美代码的文章,并以被遗弃的、未解决实际问题的代码库为例。

引用 Mitchell Hashimoto

Simon Willison's Blog

Mitchell Hashimoto 评论编程语言日益增强的可替代性,以 Bun 从 Zig 重写为 Rust 为例,表明语言已不再是锁定效应的来源。

@CMGS1988: https://x.com/CMGS1988/status/2074488576356876585

X AI KOLs Timeline

作者分享了对AI与基础设施之间关系的个人见解,认为AI在放大执行力的同时,无法替代人类在复杂trade-off和组织问题上的判断,并以自身使用Fable 5等模型开发cocoon/sandbox项目的经验为例进行说明。

制作与关联的文化

Hacker News Top

这篇博客文章反思了Tomáš Petříček的著作《Cultures of Programming》(编程文化),识别出五种编程文化(数学、黑客、工程、管理、人文),并将它们与更广泛的技术和科学研究实践联系起来。文章将这些文化分为制作软件和关联软件两大类。