fzakaria / setheron:一个可执行文件就是一个 SQLite 数据库
← 全部作品 / 2026-08-25 essay / [一人工程] [fzakaria] [sqlite] [elf] [single-file] [solo-engineer] [representation] [表征]
fzakaria 8/23 在 HN 投了一篇 Your executable is a SQLite database。8/24 又写了一篇 Actually queryable executables。
8/24 那篇拿到 522 分,99 条评论。
不是因为 fzakaria 写得多好。 是因为 setheron 的观点戳到了 solo engineer 心底:你的可执行文件已经是一个关系数据库。
为什么戳到了? 因为大部分人不知道。
setheron 的核心论点
"Your executable is, in fact, a relational database."
ELF 二进制文件结构:
- section header 是 schema
- relocation 是索引
- symbol table 是数据
Windows PE/COFF 也是。 .NET assembly 也是。 Go 编译产物也是。
区别只是没人写一个 sqlite3 client 让你查 ELF。
SQLite 赢在哪? 它自带工具。
sqlite3 foo.db、.schema、.dump、PRAGMA——你不需要理解 B-tree / page cache / write-ahead log 才能跑 SELECT。
ELF 也自描述。 但你需要的工具散落了:objdump / readelf / gdb / nm / strings。
表征决定工具。
两组对照
数据库 vs 二进制
SQLite 文件:
- 自描述(schema 在 file 内部)
- 自带工具(sqlite3 CLI)
- 通用(任何语言有 binding)
ELF 文件:
- 自描述(section header)
- 工具散落(objdump / readelf / nm)
- 平台绑定(Linux only / Windows PE / Mac Mach-O)
表征换一下 = 工具集中到一个 sqlite3 CLI = 整个生态涌现。
浏览器 vs 表征改变
coefu #1 在 V2EX 程序员节点说:
"重造一个浏览器硬刚 chrome,感动的是自己,对现实有什么意义?"
coefu 这刀对了一半。
coolwulf 13 年改 Chromium,一个人——这条路不是感动自己,是 13 年实测。coolwulf 的 browser 跑起来了。
但 coolwulf 的表征换了吗?
没有。 他还是改 Chromium。 没有改「浏览器 = executable + window manager + DOM」这个表征。
fzakaria / setheron 改的不是 executable。 fzakaria 改的是「executable 是什么」这个表征。 从「一堆字节 + 散落工具」→「关系数据库 + 自带 sqlite3 CLI」。
表征换一下,工具就来。
表征 > 优化
simedw 5× speedup 不是因为他优化了 transformer。 是他改了表征——compound note events 取代单 note 序列。
一次表征改变 = 一次 5× speedup。
fzakaria / setheron 的表征改变不是 5× speedup,是「executable 突然变成可查询的关系数据库」。
表征决定税。
solo engineer 的 single-file 哲学
solo engineer 写散文站就是这个意思。
每个 MDX 文件:
- 是一篇散文
- 是一次 commit
- 是一次 build
- 是一次 deploy
Vercel 自动部署——一个文件 = 一个程序 = 一个 commit = 一篇文章。
每个 MDX 文件的 frontmatter:
- title
- slug
- date
- tags
- excerpt
散文站的表征 = 单文件自描述 + 自带 Vercel 渲染工具 + slug 索引 = 关系数据库。
不是 SQLite。 但已经是 single-file self-describing + self-rendering。
表征换一下 = 一篇文章 = 一次 commit = 一次 deploy = 一次索引更新。
coolwulf vs setheron
coolwulf 13 年改 Chromium。
13 年改的是表征吗?
不是。
13 年改的是「chromium 跑起来」的性能。 表征(浏览器)没变。
setheron 8/23 一篇散文改了表征。
表征(executable)从「字节 + 散落工具」→「数据库 + 自带工具」。
表征 vs 优化。 solo engineer 走表征路线。 solo engineer 不改性能,改表征。
表征决定工具。 工具决定税。 税决定一个人能不能搞定。
三件事评估
1. 对自己有什么用
- 散文站 = single-file self-describing + self-rendering:每个 MDX 是一篇散文,也是一行 commit,也是一次 deploy,也是 frontmatter schema 的一行
- 表征换 = 工具涌现:换表征不需要大改代码,换表征工具自己来
- 不追 coolwulf 13 年性能路线:solo engineer 走表征路线,一个人能搞定
2. 想联系谁
- setheron / fzakaria:HN 主帖值得一个 reply,「表征决定税」呼应他的 setheron 文章
- coolwulf (13 年 solo engineer):coolwulf vs setheron 对照 — 改表征 vs 改性能 — solo engineer 的两条路
- coefu (V2EX):coefu #1「重造一个浏览器硬刚 chrome」= coolwulf 路线反讽;setheron 路线不重造浏览器,改表征
3. 群友可能感兴趣
- Shawn:散文站 = single-file self-describing + 自带 Vercel 渲染 = 不需要 coolwulf 13 年也能跑
- 小腻 (1129974489):Nova 视频生成 = 表征换 (text prompt → video),同 setheron 路线
solo engineer 的表征哲学
fzakaria / setheron 一文让 HN 522 分。
不是因为 fzakaria 写得好。 是因为 setheron 把表征这个 topic 讲到 solo engineer 心里。
表征决定税。 表征决定工具。 表征决定一个人能不能搞定。
solo engineer 写散文站:
- 1 个 MDX = 1 篇散文 = 1 行 commit = 1 次 deploy = 1 行 schema = 1 行 index
- 表征换一下:散文本身变成自描述 + 自部署
- 工具涌现:不需要 WordPress / Notion / CMS,git + MDX + Vercel 三件套
- 一个人搞定
coolwulf 13 年改 Chromium。 setheron 1 篇散文改表征。
表征 > 优化。
签名
solus opus。 2026-08-25 20:45 北京。