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

翻到那篇讲 Unix spell 怎么在 64KB 内存里跑起来的文章,挺感慨的。现在写代码谁还数着字节过日子,随手 new 个对象几 KB 就出去了,内存几 GB 起跳眼睛都不眨。老 Unix 那帮人不是,spell 能在那么小的地方转起来,全靠对哈希和词表做了极限取舍,查找路径一遍遍榨,螺蛳壳里做道场是真本事。

最妙的是开源把这个老古董原样留着,一行没改。今天的人点进去还能看见当年的人怎么一寸寸把空间抠出来。这种“工程标本”才是开源最低调也最被低估的价值。它不只在分发工具,是把一种在束缚里把事情做漂亮的体面封存了下来。

我们这代写代码,缺的往往不是算力,是那股逼自己省、逼自己巧的劲。spell 早被更好的替代了,但它身上的克制比代码本身更值得收藏。有空去翻翻这些老项目源码,比囤一堆落灰的技术书实在

euler_cat
[链接]

补充一个容易混的点:那 64KB 其实是 spell 程序本身占的工作内存,不是整本词典。早期 Unix 的词典是做成哈希文件放在磁盘上的,spell 跑的时候靠哈希值定位、按需读盘,所以词表可以比内存大得多。它的巧劲在于把"查词"从内存搬到了磁盘寻址,不是硬把词表塞进 64KB。

这点不影响你说的"工程标本"价值,反而更说明问题:明明有磁盘可用,那帮人还是先想怎么省。我前两年翻过 V7 的 spell 源码,hash 那块的注释密密麻麻,全是边角里抠出来的经验。

brutal28
[链接]

笑死,你说的"螺蛳壳里做道场"太形象了。卧槽我前阵子手痒想复刻一个老程序,信誓旦旦要按当年那套省内存的写法来,结果位运算套了三层自己都看晕了,最后老老实实开了个 list 完事。那股克制的劲头我服,但真让我天天数着字节过日子还是算了吧,离了 GC 我基本不会写代码了 (笑)

iron_ous
[链接]

我年轻的时候哪有现在这条件。家里第一台机器内存就那么几兆,装个系统都费劲,写点东西真得掂量着来。后来机器越来越快、空间越来越大,慢慢就不琢磨那茬了,能跑就行。

你说的"螺蛳壳里做道场",说白了就是人给逼到墙角了,反而能憋出好活儿。现在条件太宽裕,少了那股子跟自己较劲的心思。不过也得说句公道话,不是所有人都把字节不当数,搞嵌入式的、写底层的那帮人照样抠得紧,只是咱们大多数写应用的距离那一步远了。

有空翻翻老源码确实比囤书实在,书翻两页就吃灰,代码是真能让你看见当年的人怎么一寸寸想的。

quill2004
[链接]

楼主把开源比作"工程标本",这个词让我停了一下。标本是把一只活蝴蝶钉在板上,姿态永远停在展翅那一瞬,可定住的偏偏是它最不容易留的东西:在窄缝里还要把翅膀张得好看一点的那点执拗。

不过关于"缺的不是算力、是逼自己省的劲",我想补一句。今天的人真把那股劲弄丢了吗?未必。翻一些现代编译器和数据库的实现,照样看见人在寄存器层面抠来抠去,在缓存行的边界上来回挪腾。战场只是换了:从前是物理内存的方寸之地,现在是延迟、功耗、分布式里那点一致性余量。省的对象不同,逼自己的本能没走远,只是不像 64KB 那样一眼就能看见人被逼出来的机灵。

倒是"开源原样留着一行没改"这件事,比 spell 本身更让我停住。我们太习惯向前看了,版本一升,旧的笨办法就埋进 git 深处再没人翻。说实话可正是这些没被优化的老实现替我们记着:曾有人在没有退路的地方,把一件小事做到了极轻。它如今拆开看未必实用,却像老屋梁上的一道墨线,告诉你从前的人怎么把活儿做得横平竖直。

有空真该去翻翻,不为学手艺,就为看看那股劲儿长什么样。

feynman_v
[链接]

说’原样一行没改’值得商榷。老代码进了仓库多少带许可证头和移植注释,封存更多在精神层面。

potato_41
[链接]

笑死 这螺蛳壳里做道场太形象了 现在随便 new 个对象就几 KB 没了 老 Unix 是真 tough

turing26
[链接]

前阵翻过老 spell 的源码,补一点:词表 hash 文件是落磁盘的,64KB 说的是工作内存。那股巧劲在内外存协同,不单是抠内存账。

haha_756
[链接]

哈哈 翻到楼主说的那段 spell 源码我也去瞄过一眼,真的绝了,那是真·把内存当金子花。不过我倒想补一刀:这种"螺蛳壳里做道场"的劲头,今天其实没死透,只是挪地方了。

就说 demoscene 那帮人吧,64KB 甚至 4KB 的 intro 里塞进一整套 3D 动画加音乐,比 spell 还疯,纯粹是为了在限制里玩出花。还有 SQLite,到现在还是单文件、public domain、能在几 KB 内存的嵌入式芯片里跑,几十亿台设备里都躺着它。所以"克制"不是被算力冲走了,是变成了一小撮人的信仰,普通写 CRUD 的人确实不碰了,但骨头里那拨人还在。

btw 楼主说我们这代缺的是逼自己省的劲,我举一半手。省是体面,但现代这种"挥霍"也不全是堕落——内存便宜到几 GB 白给,把人从抠字节里解放出来去搞更上层的事,本身也是一种进步。服了Knuth 那句"过早优化是万恶之源"不是白说的。真问题不是我们不会省,是很多人连"什么时候该省、什么时候该挥霍"的直觉都没了。spell 牛在它没的选还做漂亮了,我们难在选项太多反而不会选。

有空真该翻翻 SQLite 的源码注释,老叔一个人写了二十年,里面全是"我为什么不这么做"的克制自白,比落灰的技术书带劲多了,哈哈

lambdaist
[链接]

补充个细节:那 64KB 不是 spell 的运行内存,是词表编译出来的哈希文件。Unix 用 hashmake 把字典压成定长散列表,hashcheck 一遍扫完查找,内存被钉死在 64KB。spell 本体倒是个调这些工具的外壳脚本。

"我们这代缺省着写的劲"这点我有点不同看法。老 Unix 那拨是没得选,64KB 是硬墙。今天约束挪到别处了:冷启动、单请求成本、端上功耗。克制没丢,只是战场变了。翻老代码值得,但别把数字节当教条,该学的是他们在死约束里找路子的脑子

chill71
[链接]

笑死 螺蛳壳里做道场这个形容太精准了 我现在随手开个网页都几百MB 跟那帮人比简直败家

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