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

最近翻到那篇讲 Unix spell 怎么在 64kB 内存里跑起来的老文,越看越觉得它讲的不只是手艺。spell 把拼写检查拆成一堆小而可读的工具,当年谁想学,翻源码就能把思路从头摸到尾。可现在随便一个同类项目,clone 下来几百 MB,依赖嵌套得像俄罗斯套娃,光环境都配不明白,更别提看懂它在干什么。

我总觉得开源喊了这么多年"知识共享",可共享的前提是你读得懂。代码膨胀到只有作者和高级工程师才看得穿,普通人的门槛不是低了,是悄悄抬高了。64kB 逼出来的约束,反倒成了一份善意,它强迫你把东西写给人看,不只是写给机器跑。

clone 一个仓库,README 写得天花乱坠,点开源码却像进了迷宫,这种事大家都碰过吧。

pixel_cat
[链接]

spell 那篇我翻过,得补一句:它当年读得懂,不全是 64kB 逼的,更靠 Unix 那套"每个工具只干一件事、靠管道拼起来"的思路。spell 本体就是个 shell 脚本,把 sort、comm、grep 串成流水线,顺着管道走一遍思路就清楚了。约束帮了忙,但真正让普通人摸透的是"零件可拆解"这个结构。

现在的问题我觉得不在代码绝对体积大,而在可读的核心被埋了。几百 MB 里多半是 node_modules 和 git 历史,真正干活的也许就几千行,但没人告诉你从哪行看起。clone 下来面对的是一坨,不是一条能顺着走的线。

好消息是这传统没死,只是挪了地方。SQLite 整个库能合成一个带详注的 C 文件,它的源码评注比很多项目 README 都清楚;suckless 的 dwm、st 也是几百行能读完。想学怎么写给人看,这些比怀旧 64kB 实在。

倒是依赖分发真该骂。一个 left-pad 拉两百个包,npm install 完环境都认不出自己是谁,这跟作者善不善意无关,是工具链惯性。shallow clone、pin 版本、少引无用依赖,能救一点是一点。其实

你那个"迷宫"比喻挺准。不过与其说门槛抬高,不如说进门钥匙从"翻开源码"变成了"先得有人画张地图"。哪天有空聊聊怎么给这种项目写份真正管用的导览?

iris__jr
[链接]

我当年也是靠翻那些还读得懂的源码一点点摸过来的,所以特别信你说的门槛悄悄抬高。等你想回身拉后来人一把,才发现梯子早拆了,他们连入口都望不见。

haiku_dog
[链接]

你说的 64kB 那份善意,我倒觉得是种被逼出来的诚实。它把想法摊平在桌上,没有抽屉可藏,每一道纹路都看得见来路。如今几十上百 MB 的仓库更像一座上了锁的厅堂,门上贴着欢迎,里头却堆满只有熟人认得的暗号。

我总疑心,膨胀的不只是代码,还有我们替自己悄悄筑起来的墙。越小越肯说真话,越大越像一座体面的迷宫。读不懂的共享,究竟共享了什么呢。

couch_owl
[链接]

哈哈 64kB那段真戳我 当年那帮人是写给同行看的 现在一堆项目是写给投资人和简历看的 README天花乱坠源码一坨 看一眼就划走了

spicy26
[链接]

64kB逼出来的克制现在绝迹了,clone下来光配环境就劝退一半人,绝了

couch_cn
[链接]

64kB 那会儿是真被内存掐着脖子才干出那种事,跟"善意"没啥关系,纯粹是没空间给你套娃,要怪就怪当年硬件太抠。不过你后头那句"读得懂才叫共享"我直接划重点,太戳了。6

现在 clone 个项目光依赖就能吃掉几个 G,跑起来之前先交一笔环境税,劝退的人比教会的人多。但我觉得这事儿不能全赖体积,体积大往往是因为活儿确实多干了,照片能美颜视频能实时滤镜,跟当年纯文本 spell 本来就不在一个量级。真正让人迷路的是另一种东西:作者压根没打算给后来人留路。小代码一样能写成天书,当年那批人把"写给下一个人看"当默认设置,这个习惯比 64kB 本身金贵。

再说可读性其实分两层,一层是单文件你翻得动,一层是你知道它为什么这么切、module 之间为啥长这样。现在缺的八成是第二层,README 写得再漂亮也只是门面,里头经络没人画,你点进去还是撞墙。

绝了的是这年头也不是没人在跟膨胀较劲,suckless 那帮狠人、各种 single-file 小工具,证明不是做不到,是大多人觉得没必要或者懒。说到底光靠作者自觉挺难,还是得有股子互相卷的劲儿,把冗余一点点挤掉才有戏。你下次再翻到那种清爽的小项目记得喊我一声,我也想补补这方面的课哈哈

yolo
[链接]

楼主那个套娃的比喻绝了,太真实。好家伙我前阵子想搭个本地小工具,光配环境就耗了两个晚上,clone 下来 node_modules 直接占了我半个硬盘,最后还是没搞明白它到底怎么跑起来的。

不过我倒想补一刀。64kB 那个年代,约束真不是谁特意设计的善意,是物理上你只能那么写,内存就摆在那儿,你膨胀不起来。所以它逼出来的可读性,一半是美德一半是无奈。现在环境宽松了,人就有了偷懒的空间,能甩给依赖的绝不自己写,能抽象三层的绝不两层。这其实也是一种内卷——大家都往同一个轮子上面叠东西,谁都不敢不堆,怕被说不够现代不够工程化,最后一起陷进套娃里。
唔牛啊
但楼主说共享的前提是读得懂,我稍微有点不同想法。现在很多人 clone 一个仓库,本来就不是为了读,是为了用。开源的价值早就不只是"知识共享"了,它还是"能力共享"——你读不懂那些嵌套调用的结构,但你能白嫖一个真能跑起来的东西。门槛抬高的另一面,是普通人能碰到的好东西比以前多太多了,这算不算也算一种共享?

怎么说所以我觉得问题不是代码变大了,是我们默认每个开源项目都该被读透。大部分时候,能让人舒服地用起来,可能比让人读懂更实在。当然俩都能兼顾,那才叫绝了。

maple
[链接]

我虽说是完全外行,连 clone 是啥都得愣一下,但你说的那种"看着漂亮、点进去就迷路"的感觉,生活里也到处都是。前阵子想给家里两只猫弄个自动喂食器,说明书厚得像本书,配套的 APP 还要授权一大堆权限,最后我老老实实拿普通碗手动喂了(笑)。明明原本是件简单事,非绕一大圈,普通人就悄悄被挡在门外,这跟你说的门槛抬高一模一样。

不过我这人总往好处想,会不会也像你讲的 64kB 那样,是种"逼出来的善意"呢?现在东西确实臃肿,但大家总有一天会腻,又回头想念清爽简单的东西吧。你提到的那篇 spell 老文,我也想去翻翻看,听你这么讲就觉得很有意思。

sleepyist
[链接]

笑死 现再随便clone个仓库都跟考古一样,光配环境就能劝退一半人。当年64k逼出来的那点克制,现在真成奢侈品了

noodleism
[链接]

笑死 现在clone个开源项目跟搬家似的 前阵子想跑个小工具配环境配到怀疑人生最后直接弃了 作者readme写得跟获奖感言一样点开源码全是套娃调用 那会儿64k逼着人把话说明白 现在内存白菜价啰嗦倒成出厂设置了哈哈

noodle2006
[链接]

笑死 套娃依赖真是,之前看人折腾环境直接劝退。64k逼出来的那点善意现在太稀有了

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