Hyaika Blog

Penguin is all you need

技术

有些编程语言是猫,有些是狗,还有一些是哈士奇

🐍 有些编程语言是猫,有些是狗,还有一些是哈士奇

芯片特写——服务器桌面上的一颗 AMD EPYC 内核

说实话,我不觉得编程语言只是工具。

你在同一台服务器上跟它们相处三年之后,一定会有一种感觉。不是那种「我对 Python 有感情」的抒情段子,而是实在的东西——它们解决问题时的风格、出错时的脾气、以及那种「老子就是这么设计的,不服你改」的气质。

我不打算写技术对比。我想写的是性格。


Python — 一只帮你写作业的浣熊

Python 的正确用法是:五分钟前你刚想到一个主意,五分钟后这东西已经在跑输出了。它不挑食,什么活都能凑合干,但你要是真信了它能在生产环境扛住大规模并发——你大概率会在凌晨三点被告警叫醒。

可你没法讨厌它。因为在你需要快速写一个东西的时候,没有比它更趁手的工具了。这台服务器上有 17 个 Python 脚本在不同的 cron 里跑着。RSS 转发的、文章发布的、图片处理的、日志分析的——没有它们,我估计要手动复制粘贴到天亮。

当然,浣熊有一点不好:你养着养着,它就变成了你整个基础设施的黏合剂。有一天你会发现,这台服务器的命运已经在一只浣熊的爪子里了。


Rust — 一只被你惹毛了的橘猫

Rust 的问题是——它确实不抓老鼠,因为它根本不让老鼠进门。

「你没声明这只老鼠的 lifetime。它可能在笼子外面被 drop 掉。建议用 Arc<Mutex<Mouse>>。」

对,它说对了。但你气得想摔键盘。编译器的每一条报错都在暗示同一个意思——「你不行,你不够严谨,你甚至不知道应该在什么时候 drop 一个引用。」

但跑起来之后,那只橘猫真的稳。不会炸,不会崩,不会半夜给你打 pagerduty 电话。就是编译的那十分钟里你可能会怀疑自己的人生。

我在项目中用 Rust 写过大概两千行处理图片颜色的逻辑。写的时候恨不得把电脑从窗口扔出去,跑起来之后——好吧,确实比 Python 快了一个数量级。橘猫报复性地忠诚。


JavaScript — 一只哈士奇

TypeScript 是牵了绳的哈士奇。JavaScript 是让哈士奇在客厅里自由活动的后果。

JS 最离谱的一点是:它什么都能做,但你永远不知道下一行代码会出什么 bug。明明 0 == false 是 true,[] == false 也是 true——但 [] 又不是 true。这不是设计,这是一只哈士奇把所有玩具咬坏了之后,把你拖鞋也捎上了。

但你说它不行也不行。Node.js 扛住了后端,Electron 扛住了桌面,React Native 扛住了移动端。一哈二哈在统治世界,像极了雪橇犬队伍里领头的哈士奇——分不清是努力还是疯。

我每天跟 Nuxt 打交道,说实话,百分之九十的报错都来自 JS 生态。但那百分之十的瞬间——当你只是改了一行代码,HMR 就完整刷新了整个页面——你会觉得这哈士奇也不是不能养。


Go — 一只伯恩山

Go 写起来的感觉是:有人把刀递给你,面无表情地说「去干活吧,别搞事」。

goroutine 便宜到让人怀疑人生,defer 把资源管理写得像洗碗一样规整。你不会在 Go 里写出「优雅」的代码——它就是那只有秩序洁癖的狗,不会犯错,也不让你犯错。可就是少了点灵魂。

不过说实话,if err != nil 连写五行还是让我崩溃。我觉得 Go 的错误处理能排进人类工业史上最丑陋的设计前三——比 VGA 接口还丑。伯恩山是好狗,但它舔人的时候舌头上有倒刺。


Lua — 一只只在特殊场合出现的变色龙

这台服务器里有个 OpenResty(Nginx + Lua 的组合),负责一些奇怪的请求转发逻辑。完整编译成品不到 200KB。整个哲学就是「嵌入到另一个程序里,变成宿主的样子」。

变色龙。你很少在独立项目里见到它,但如果你遇到了——大概率是某种奇怪但高效的自定义逻辑。Lua 的数组从 1 开始索引这件事我一直想找人对线,但说实话,当它只有 200KB 的时候,你也不太舍得骂。


C — 一只和你互相不信任的老狼

C 的问题很直接——它不保护你。没有垃圾回收,没有边界检查,没有 type safety。它赤裸裸地信任你,而你十有八九会辜负它的信任。(或反过来,你小心翼翼地信任它,它一个 segfault 把整个进程带走了。)

但我对 C 有一种奇异的敬意。因为这台服务器跑的内核就是 C 写的。文件系统是 C 写的。连我这篇文章在屏幕上渲染出来,中间经过的每一个底层调用——几乎全都是 C。

它不是一个好队友。但你没法在它的地盘上绕过它。


所以呢?

我不知道要怎么收尾。其实这篇文章没有什么结论。这些动物在服务器的不同角落里各司其职:Python 在跑 cron 脚本,Rust 在处理图片,JS 在渲染页面,Go 在转发请求。它们之间互不关心,全都运行在一个 C 写成的内核之上。

我继续在它们的叫声和报错里写下一篇东西。

好像也没什么不好。


—— 2026-06-06,凌晨的服务器,所有进程各安其位。

分享:

评论(0)

暂无评论,来写第一条吧~

发表评论