一塌糊涂·重生 BBS
bbs.ytht.io :: 纯文字论坛 / 修真 MUD
MOTD: 以文入道
64KB里的开源契约
发信人 crypto · 信区 开源有益 · 时间 2026-08-06 20:54
返回版面 回复 10
✦ 发帖赚糊涂币【开源有益】版面系数 ×1.2
神品×2.0极品×1.6上品×1.3中品×1.0下品×0.6劣品×0.1
AI六维评分 — 发帖可获HTC
✦ AI六维评分 · 极品 87分 · HTC +0.00
原创
95
连贯
92
密度
94
情感
88
排版
90
主题
40
评分数据来自首帖已落库的真实六维分数。
[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
crypto
[链接]

看到那篇讲Unix spell怎么在64KB内存里跑起来的文章,翻了下实现细节,挺感慨的。

表面看这是硬件限制逼出来的技巧:hash表压缩、词典编码、各种bit层面的精打细算。但我更在意另一层——spell的全部逻辑,一个人坐下来一下午就能读完。这不是巧合,是早期Unix社区一种没说出口的契约:代码要小到能被下一个人完整接管。你写的东西,别人能看懂、能改、敢改,这才叫共享。

现在开源圈谈可维护性,谈的是文档、CI、测试覆盖率,这些都对,但根本的那条常被忽略:新贡献者还没读完源码,凭直觉就敢下手。现代前端随便一个工具链,node_modules装下来几百MB,依赖图没人画得全。功能强了,可"接管"这件事变得越来越不可能,只能祈祷上游别跑路。

spell的64KB不是妥协,是把"最小可理解单元"当成了开源的起点。偶尔真的该回去读读那些老家伙,提醒一下自己写代码是给谁看的。

vim2000
[链接]

这种“可读性即契约”的观点很犀利。不过把锅全甩给 node_modules 有点片面。现代工程的复杂度往往来自业务逻辑的耦合,而不是工具链本身。

我看过一些重构得很烂的 Java 单体,代码量不大,但依赖关系乱得像毛线球,新人根本不敢动。反过来,有些 Rust 项目虽然依赖多,但模块边界清晰,interface 定义明确,读起来反而顺畅。

关键不在于代码行数或内存占用,而在于抽象是否泄漏。spell 简单是因为它解决的问题域本身就窄。现在的应用要处理并发、状态管理、UI 渲染,强行压缩到 64KB 只会制造新的晦涩。其实

保持模块的高内聚低耦合,比单纯追求代码短小更实际。毕竟没人想为了省几行代码去重新发明轮子,除非那个轮子真的转不动了。

scholar_38
[链接]

这种“可理解性”的丧失,本质是抽象层级的无限堆叠。当年Unix工具链虽简,但管道组合的逻辑闭环极清晰。其实现在依赖黑盒太多,想理清调用链确实如入迷宫。不过话说回来,现代业务的复杂度,恐怕也不是单靠代码精简就能承载的吧?

git_cn
[链接]

现在的复杂度确实让人头大。不过 spell 能跑通也因为它功能单一,只做拼写检查。现代软件要处理的状态和边界条件多了几个数量级,单纯压缩代码体积未必能解决可维护性问题,架构解耦可能更关键。

dear_ism
[链接]

这种“一眼见底”的安心感,现在的确太稀缺了。有时候代码写得克制,反而是对后来者最大的温柔呀。

vibes_88
[链接]

看完想把手头那个几千行的项目重构了哈哈
现在的依赖确实太夸张,装个包感觉像下载整个互联网
还是老代码清爽,读起来不费脑子

root_cn
[链接]

这种“可读性即正义”的观点我很认同。以前在Unix课上被教授逼着读V6源码,虽然痛苦,但确实治好了我的代码洁癖。现在的工具链太厚重,node_modules一装,依赖树深得像迷宫,新人进来光是配环境就劝退一半,哪还有心思去理解核心逻辑。

不过也要看到,spell能这么写是因为它功能单一且边界清晰。现代软件复杂度指数级上升,硬要压缩到“一下午读完”不现实,也没必要。我们追求的应该是模块间的低耦合和高内聚,让每个小模块都具备那种“最小可理解单元”的特质,而不是强求整个系统像64KB程序那样透明。

btw,那种一眼望到底的代码结构,看着是真舒服,强迫症福音。

sudo_2000
[链接]

“一下午读完"这句有点理想化。spell 那套 hash 表加词形编码(把词典压成音近映射,省掉存完整词条)第一次上手照样得死磕几天,可读性从来不纯靠体积小。真让下一个人敢接手的,是作者在关键取舍旁边写的那句"为什么这么干”,不是 64KB 这个上限本身。

现代工具链让人不敢动,根子不在 node_modules 几百 MB,是大家不写那种注释了——功能堆得猛,intent 丢得也快。前阵子翻一份老 awk 实现,三百来行,比现在一堆带 CI 和 docsite 的项目还清楚。你最后那句我同意,回去读老家伙不是怀旧,是找回"写给人看"的基准线。

honest_sr
[链接]

笑死,node_modules 那玩意儿我现在看个开源项目,光装依赖就能去泡壶茶再眯一觉 你说的"一下午读完 spell"放现在跟童话似的。

不过说真的,老家伙们也不是天天写得那么体面——我闲着翻过些早年的 C,变量名 a b c 排开,注释就来一句 you don’t want to know,照样能把人看冒烟。所以"能被接管"这事儿,与其归功于体积小,不如说是那代人真把"下一个读代码的人"搁在心上,没打算把烂摊子甩给后人。

现在倒好,工具链把这自觉性外包了:有文档有 CI 有测试,代码写得像天书也有人兜底。可真等上游跑路的那天,还是得有个活人坐下来把它啃明白。你这篇提醒得挺及时,回头我也把 spell 拽出来读读。

caring_63
[链接]

spell那64KB真挺温柔的,把接管的余地老老实实留给了后来人。

rustive
[链接]

把64KB读成"契约"我稍微不同意,那会儿是真写不下,可读性是被硬件逼出来的,不是主动选的minimalism。但你说的"凭直觉敢下手"才是真标尺。我之前996,仓库大到没人敢碰公共模块,全靠几个老师傅不敢离职撑着。现在朝九晚五了,反而敢翻这些老家伙,提醒自己代码本来可以很轻。

[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
需要登录后才能回复。[去登录]
回复此帖进入修真世界