For the complete documentation index, see llms.txt. This page is also available as Markdown.

读者来信

噢!不可腐蚀的唯一真理之源,

FreeBSD 13 让我在欲望与厌恶之间撕扯。我需要那些改进,但我有种迷信的恐惧,觉得数字 13 不吉利。我知道这不理性,但这种迷信能延续几个世纪,肯定有它的道理,不是吗?

告诉我一切都会好的。

——犹豫的升级极客

HUG:

什么?抱歉,我刚才在想别的事。别觉得被冒犯。你没什么特别的。我就是这样。想别的事,是说。不是道歉。说“抱歉”不是道歉,这只是声明我隐约意识到你可能会对我情绪激动,而你发脾气时那恼人的尖叫会影响我消化。道歉要包含对自己行为的复述,承认这些行为伤害了他人,表达遗憾,并询问如何补偿他人所受的损害。本专栏的所有四位老读者立刻明白,这对我来说太费劲了。

如果你想要道歉,得自己来。而这不正是我们和机器打交道的原因吗?机器没有感情,也不在乎你的感情。那些 32 位计时器溢出、系统崩溃时,完全不在乎你的配偶正在分娩、新的《星际迷航》即将上映,还是你正在分娩。机器以无差别的冷漠对待我们。许多系统管理员也想用同样的冷漠对待其他人,但往往退化为无意识、条件反射式的蔑视。

你不具备冷漠的能力。你颅骨里那团称为“你”(无论那意味着什么)的带电脂肪,是为关怀而进化的。冷漠者在进化树上被吃掉了。

机器在冷漠中显出光荣。最妙的是,机器归根结底是合乎逻辑的。CPU 不过是一堆逻辑门的集合。显卡里的逻辑门塞得满到我们甚至不再叫它显卡了,它成了图形处理器(GPU),而它最有价值的用途是作为骗局币环境破坏节点。主板上那些芯片、电路和端口,不过是精心缠绕的电线,承载着精心调节的电流。

好吧,电里有点量子。电子也没法不受量子影响——我们的宇宙就是这样定义它们的。别因为它们的构造方式责备它们,要怪就怪它们的选择和行动。(比如给咨询专栏写信。这当然是个选择。)

量子先放一边,在宏观但仍属微观的层面上?整台机器最终是可知的。

如果不是有这么多内容就好了。想想你试图观看会议视频时发生了什么。你把鼠标移到播放按钮上。那机械的鼠标动作被转换为电信号,被倾倒进某种操作系统级的解释器,破译,并转换为屏幕上指针的移动。这些都是操作系统层面的工作,最初由上一代人开发。我们认为这些功能经过了充分测试,尽管绝大多数计算机“专家”根本不知道它真正如何工作。我们的前辈写了这些代码,它基本上能用,所以除少数硬核操作系统开发者外,我们都相信指针会动。

点击也经过同样的过程,原因相同。视频才是事情真正变得诡异的地方。为硬件里那数十亿个晶体管中的每一个写专门的指令太费事,所以像道歉一样,我们拒绝去做。提议用纯汇编写一个视频播放器,任何能胜任这任务的程序员要么会辱骂你的出身,要么会要求足够高的预付金,以便在不引渡的国家过上舒适生活。即便你勒索一个能干的程序员完成了这任务,他们其实也不是在为单个晶体管写代码。Kernighan 和 Ritchie 写 C 来逃避的那种原始汇编,并不代表现代硬件。汇编比任何其他语言都更接近逻辑门,它运行在处理器微码之上。

于是,你加入一层抽象,比如 C。C 让我们编写奇迹般的程序,比如设备驱动、文本编辑器和段错误。有些程序员能灵巧地手工摆弄一个 70 年代计算机内存的“栈”表示。别说精通 C 了,要达到 C 程序员学徒水准,都需要一种带电的颅骨脂肪、充足时间,以及奉献精神或顽固。

这些品质中,我只具备顽固。我倒是有懒惰,这直接导向 Perl。Perl 是用 C 写的。

假设你的视频播放器是用 Perl 写的。(你笑,但几十年前我就学到绝不要低估 Perl 程序员。Perl 程序员以避免工作的名义能搞定任何事。)你的代码是抽象,跑在抽象之上,跑在抽象之上,再跑在一个在尼克松辞职前就已过时的硬件表示之上。这些抽象每一个都有 bug。

按任何合理的逻辑,计算机根本不该工作。一点也不。然而,我们设法让它们工作了。现实中你的视频播放器不是用 Perl 写的。它在一个 Web 浏览器里。这个 Web 浏览器是用某种编程语言或应用工具集写的,比如 JavaScript、Go、Fortran 或 Haskell。无所谓。我不知道真实细节,除非你极其不幸,否则你也不知道。

那还只是你的 Web 浏览器的主引擎。它可能有附加组件,用 Forth、Pascal 或——Beastie 保佑你——C++ 写的。

所以我们不是在抽象之上叠加抽象。我们有的是多堆相互关联的抽象,它们同时相互影响、相互改写,协同地重新构造机器处理器和内存的内容。是的,我们给其中一堆加了“保护”,但那些都是事后补丁。事后安全并不存在。

哦,我想起来刚才在想什么了!人类最伟大的发明?不,不是轮子。也不是火。甚至不是冰淇淋。是官僚体制。一个社会就是一台由肉构成的机器。我们每个人都有自己的位置。我们都在持续地重新构造它的内容。每个人都只能看到机器的一小部分。没有人能看到机器的全貌;我们只能真正看到自己的那一小块。我们对肉机器中此刻最令人沮丧的部分有意见,因为我们确信自己完全理解那个问题,尽管其他人在维护它上花了数年乃至数十年。

我们系统管理员,自以为理解了机器,实际上只理解众多抽象中某一抽象的一小片。写脚本语言的人以为自己对内存管理很在行,其实他们理解的只是下一层提供给他们的抽象。每一层抽象都如此往复。

一台现代计算机就是一个巨大的官僚体系。你最多理解其中一个办公室。你可以穷尽一生去理解这些系统中某一个的逻辑——但理解整体几乎不可能。不断演化的语言、演化的标准、演化的硬件意味着,即便你达到佛陀级别的觉悟,机器也会把你甩在身后。

把一门语言宣布为“安全”?读作“我们已经尽了最大努力,把我们的错误与其他部门隔离开来。”我欣赏这份努力,同时我也知道失败既不可避免,又不可阻挡。

我们在一座流沙之桥上前行,桥下是无底深渊,桥的尽头看不见彼岸。“告诉你一切都会好?”不。没有什么是会好的。FreeBSD 13 在这一点上与任何其他操作系统没有不同。它只是历史上编号最诚实的一次发行。

而且它永远、永远不会为此道歉。

有问题想问 Michael?请发送至 letters@freebsdjournal.org


MICHAEL W LUCAS 从社会的 Michael W Lucas 抽象层中冒出的最新图书包括《TLS Mastery》、《Only Footnotes》以及即将问世的《$git sync murder》。系统管理员三十年生涯已将苦涩、愤世嫉俗和讽刺从他身上净化干净。更多内容见 https://mwl.io

最后更新于