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

读者来信

亲爱的答疑者,

在操作系统里,“Research”到底是什么意思?

—困惑者

亲爱的困惑者,

你好吗?家人如何?过着那种生活是什么感觉——能把别人在计算史上都懒得问的随机问题扔进虚空,全然不顾社交礼数,还指望素未谋面的人花宝贵时间回答?

都怪我这愚蠢的荣誉感。我当初为什么答应写这个专栏?

不过回答你的问题,我们先从英语的“唯一真理之源”开始——我那 1933 年版《牛津英语词典》,全部语言智慧蒸馏为 13 卷厚重的巨著,散发着启蒙的芬芳。当然,所有以“Rz”开头的词除外,因为那些敌对词汇的可怕本质。真的,我们欠那几位编纂了薄薄(且严密守护的)第 14 卷的高人一份永远偿不清的恩情,而他们都已不在人世。我不是在暗示 Rz* 以肃清白蚁的方式冷酷地清除了他们,当然。在他们可能听到的范围内,我绝不会说这种话。

那么,我们来看看 research 的定义。

dial. form of Rice1.

不对,等等。那是“Ryze”,Poy-Ry 卷的最后一个词。任何人怎么能拿起一本词典只看一个词,让我百思不解。这种人不可信。

再试一次。定义有几条,但最常见的是:

To search again and repeatedly.

我们都在做!我甚至为某个技术问题寻找解决方案时,发现上世纪那个颓废年代的一封邮件列表帖子,里面我声称自己到处搜寻解决方案。

当然没人回答。如果他们知道答案,答案就在归档里。年轻的我没有回去回复那条消息解释情况。混蛋。

但更有趣的定义是:

A search or investigation directed to the discovery of some fact by careful consideration or study of a subject; a course of critical or scientific inquiry.

许多计算机人自认为是科学家,其实他们只是科学粉,或更糟,用高声宣称“科学”来掩饰偏见与好恶。你对过去十年的数据做过合理的统计分析吗,包括图表、均值与样本相关的总体标准差?你首先保留这些数据了吗?如果没有,你和那个看美式足球时瘫在沙发上冲着电视嚷嚷“上次那个擒抱我也能做,把八号球打过对方三柱门”的家伙没什么两样。别再装你那软弱的科学粉身份与那些拿到博士学位、获得资助、做真正数学与测量科学的人相提并论了。这跟那个热爱电脑的小孩觉得自己的热情能与你辛苦获得的知识与汗流浃背的经验相当一样讨厌。

实验服你留着吧。粉丝玩 cosplay 没人介意。

真正的科学

真正的科学不是结果,不是论文,也不是用数学。你无法“不信”科学或宣布它不相关,因为科学是一种过程。不信科学就像不信走路一样。它存在。科学有四部分:观察、假设、实验与结果。

这套方法用了 400 年,我们从乘独木舟到驾乘火箭,从烧柴到烧掉整颗星球。真正的科学力量无可否认。它配得上你的粉丝身份。

科学方法

所以,你观察世界。你观察一堆细节。

你猜测某事为何这样发生。当你能清晰、简洁地陈述那个猜测时,就能称之为假设。

你无法证明假设正确,但你能证明它错误。你找出实用的方法来验证并执行测试。

如果测试表明假设错误,太好了!你知道得比以前多一点。

如果测试表明你可能正确,那也不错。记住,错的不是你,是假设。而假设本就像进程一样被生成与丢弃。

对假设产生情感依附,就像依恋运行在 PID 691 的 Web 服务器。即便你把那个进程 ID 硬编码进内核,它也会扭曲周围一切,让生活无谓地复杂化。

无论哪种情况,写下结果并告诉他人。是的,即使你错了。这个过程的数十亿次迭代给了我们猫咪视频、有效的癌症治疗与不粘锅。

计算机在其中的位置

计算机能嵌入此过程的任何环节。也许你在观察计算机,并在它失灵时大发脾气。或许你在用计算机做些数学,看看第一个猜测是否靠谱。计算机使我们的前辈无法想象的测试成为可能。退一步说,你大概会用计算机分析并发表结果。

你需要一个能预测、可靠工作的操作系统。一个你完全掌控的系统,而不是依赖 OS 厂商强加的、文档可疑的更新。你需要一个能定制以支持你工作的 OS。

如果你在读这个专栏,你知道我推荐什么。

但我还要向你推荐什么?

科学

别只是跑计算机或写代码。观察结果。衡量变更的影响。我刚开始用 Unix 时,我们有 DBX 与运行 ping(1) 的 shell 脚本,就乐不可支了。今天我们的监控工具多到拿去对付犀牛都绰绰有余。诸如 DTrace 之类的软件让窥探系统内核比以往更容易。我们用了,但用得很有限、很偶尔。

跟踪你的系统在做什么。

看哪里在抖动。

观察打补丁、装那台新交换机、或改内核那行代码时的行为变化。

提出假设。

测试假设。

记录测试。

运用科学方法不仅需要数学,还需要(惊呼)统计。统计决定你的观察或结果是否有意义。

然后记录结果。即使结果推翻了你的假设。你可以把这应用到计算行业最简单的部分。

  • 观察:服务器不断意外重启。犰狳在机箱里筑巢。

  • 假设:犰狳在重启服务器。

(jmaurer@freebsdjournal.com)

最后更新于