# 标准

市场的压力和用户的需求推动了 Unix 标准的建立。在不到十年的时间里，市场迅速扩展。在接下来的十年里，许多公司诞生，其中大多数消失了，但有些幸存下来。硬件和软件的不兼容性成为多厂商市场中的主要缺陷，这与 1956 年到 1978 年期间几乎所有计算中心都使用单一颜色（通常是蓝色）的情况不同。微型计算机和工作站——苹果、PC 和微软——对这种变化影响深远。

这里有两个方向：系统标准化和语言标准化。后者（C 语言的标准化）已经完成：美国国家标准协会（ANSI）成立了 X3J11 委员会——《C 语言》委员会——并成功发布了 ANSI 标准 X3.159-1989，随后成为国际标准 ISO/IEC 9899:1990。

操作系统的标准化经历了更曲折的过程。Unix 标准化始于 Heinz Lycklama 向 /usr/group 董事会提出成立标准委员会的建议。到 1984 年，该委员会制定了一个 /usr/group 标准，并被会员采纳。虽然它没有官方地位，但 /usr/group 标准影响很大：ANSI X3J11 在制定 C 库部分时以此为基础。然而，由于 System V、4.nBSD 和 XENIX 等系统的分歧发展，/usr/group 标准很快变得不适用。

1985 年初，/usr/group 委员会与新成立的 IEEE POSIX 工作组（电气和电子工程师协会，可移植操作系统）合并，/usr/group 标准被采纳为初稿。

到 1989 年，POSIX 产生了 10 个子委员会；四年后，子委员会超过 20 个，但只发布了两个标准——虽然是最重要的两个标准——POSIX.1 和 POSIX.2。还有一本 POSIX.0 文档：《POSIX 开放系统环境指南》，试图解释应用程序的可移植性。

但需要明确的是，POSIX 不是 Unix，它是接口，而不是实现。Fred Zlotnick 称 POSIX 为“Unix 的泛化”。POSIX.1 采纳了许多 Unix 的概念，并将它们替换为抽象，从而使许多原本不兼容的系统成为“POSIX 兼容”。

随着标准化越来越多地由市场驱动而非技术驱动，其结果难以预测。各种行业联盟发布的标准反而没有鼓励用户。

例如，1985 年 1 月，AT\&T 发布了 System V 接口定义（SVID），这是一份“有版权的、非专有的开放系统文档”。五年后发布了新版。与此同时，X/Open（成立于 1984 年底）发布了其可移植性指南（XPG），现已历经多个版本：XPG2、XPG3、XPG4。XPG3 和 XPG4 在多个方面超越了 SVID。

88open 是“一家致力于基于 Motorola 88000 RISC 处理器家族创建多厂商开放计算环境的公司和个人社区”，成立于 1988 年。该联盟发布了《源代码手册》和《开放系统参考指南——标准世界》。我将在后续章节讨论开放软件基金会和 UNIX International。

在 Unix 20 周年会议上，Ritchie 评论了 C 语言标准和 POSIX：

> 我们与 Unix 标准化工作几乎没有太多直接关联。最主要的互动是试图对 POSIX shell 做一些改进，或者提出一些批评。对于 C 语言标准，我刻意没有介入 X3J11。我确实在幕后与 Larry Rosler 和 Dave Prosser 有过一些交流，他们当时是草案的编辑，也是委员会中 AT\&T 的代表，但除了在“noalias 事件”中我非常直言不讳之外，我并没有参与其他事情……
>
> 我认为 \[C 语言标准] 做得很好。实际上，几乎可以说是一个成功标准化工作的典范。他们拿到了一个基本没坏但确实需要澄清和更新的东西，既澄清了也更新了，而且没有破坏它。当然，肯定还有许多批评之处……但相比于其他语言标准化的结果，比如 FORTRAN 8X，甚至是标准化机构尝试定义的 Pascal，C 语言的命运非常理想。

Ritchie 对 POSIX 努力的热情远不如对 C 语言标准那样高涨：

> 这是一种更为复杂的情况。系统调用接口、库，甚至命令行看起来都相当稳固，也没有太大的争议和混乱。业界似乎也普遍支持这样的结果。另一方面，这些部分却缺乏一些相当明显的东西，比如一个连贯的网络处理方式。Presotto 和我几年前在 USENIX 上讨论过一种方法……不过，我们的方法似乎还没有席卷全球。
>
> 此外，IEEE 的 POSIX 工作似乎在以某种令人沮丧的方式走偏了。特别是实时组，似乎正在收集各种未经消化的想法，这些想法和现有系统之间并不怎么契合。我对所谓“任务处理”——即多个小进程在同一个内存镜像中执行——感到担忧，因为 Unix 及其软件所建立的模型并不能很好地容纳这种方式 —— C 语言不支持，库也不支持。多处理带来了许多关于软件设计方式的影响，而我担心如果只是硬塞进去，最终只会造成一团糟。说我对此态度矛盾简直是轻描淡写！围绕标准化所带来的（心理上、政治上的）紧张，在很多层面上都是巨大的。
>
> 人们常提到的，是创新与标准化之间的斗争。但我不认为这是真正的问题。如果存在标准，你可以有意识地做出决策，是选择遵循标准还是另辟蹊径。这固然是一种赌博，但也是合理的。而真正的紧张在于，决定某个领域是否“已经到了该标准化的时候”。当某件事情明明该制定一个统一标准却没有做到时，后果真的很糟糕（比如 VHS 与 XBeta 的对决）。
>
> 有一点大家应该明白，在许多与我们相关的领域，标准往往是由非常窄的群体制定的，而如果你足够关心，并以合适的方式参与，是可以对其施加影响的。在形成阶段，一个措辞得当、具体明确的建议可以起到很大的作用。当然，这也是一种悖论。这意味着，少数几位优秀的人真的可以挽救局势，但也意味着，少数几个蠢人也能把事情搞砸很多年。

自从 Ritchie 发表上述评论以来，POSIX 子委员会的数量不断增加，而当时存在的一些提案中，只有少数推进到了投票阶段。此外，随着越来越多的联盟组织的成立，不符合各个 IEEE 委员会正在进行的工作的非正式标准的数量也在不断增加。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.bsdcn.org/unix-si-fen-zhi-yi-shi-ji/unix-chan-ye/24-standards.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
