01|这门语言最早的现场,不像前端课,更像 CERN 的文档室

如果你今天去看 1992 年那页著名的 MarkUp 文档,第一眼甚至会有点失望。

没有组件。

没有布局体系。

没有“如何做出更酷网页”的野心。

它不像前端圣经。

更像一张贴在实验室墙上的工作说明。

那页文档做的事非常朴素:告诉你 HTML 是一套基于 SGML 的标记格式,列出一批标签,顺手还写了一条后来特别重要的规矩:

浏览器遇到不认识的标签,就忽略它。

这一句很像不起眼的门牌。

可它其实已经把 HTML 的一部分命运写出来了。

因为它说明这门语言从一开始就不是在追求“出错就停、看不懂就报废”的纪律。

它先追求的是另一件事:

先把东西读出来,先把文档连起来,先让这张网长起来。

这就是 HTML 江湖 的起点。

它不是从“网页长什么样”开始的。

它是从“世界各地的文档怎么先互相找到彼此”开始的。


02|Tim Berners-Lee 当时想解决的,不是网页设计,而是文档失联

今天很多人学 HTML,是从这些东西开始的:

  • 标题
  • 段落
  • 表单
  • 语义标签
  • 多媒体标签

于是你很容易误会:

HTML 天生就是今天这种网页骨架语言。

其实不是。

Tim Berners-LeeCERN 设计最初那套 Web 时,脑子里最重的几个词不是“首页”“视觉”“交互体验”,而是:

  • 文档如何描述
  • 文档如何互相引用
  • 文档如何跨机器访问

也就是说,早期 Web 的主问题根本不是:

“页面能不能更像软件界面?”

而是:

“不同机构、不同机器上的文档,能不能先用统一方式挂到同一张网上?”

所以最早那批 HTML 标签长得才会这么像文档室用品:

  • 标题
  • 段落
  • 列表
  • 锚点
  • 预格式文本

这不是偶然。

这是出身决定的。

Dave Raggett 后来回顾早期 HTML 时,有一句特别值得记:Tim 发明的那套 HTML,strongly based on SGML

这不是学院派背景音。

这是整条历史的第一层底色:

HTML 最初更像一套结构化文档标记,不像一套界面语言。


03|真正决定 HTML 性格的,还有一个常被忽略的细节:它天生就准备和“不完美现实”共处

前面那条 MarkUp 页面里,还有一句今天回头看特别有味道的话:

浏览器应该忽略自己不理解的标签,也忽略自己不理解的属性。

这句话非常要命。

因为它说明 HTML 从出生起就有一种很现实的脾气:

不是“所有人都必须完全看懂才能继续”。

而是“哪怕你只看懂一部分,也先让内容流过去”。

这当然会让它显得不够严。

可你放回当时的环境,就会知道为什么这套脾气很重要。

早期 Web 面对的是一张正在长大的网:

  • 机器不同
  • 软件不同
  • 终端能力不同
  • 作者水平也完全不同

如果第一代 HTML 就要求:

  • 所有人都必须严格守一套复杂纪律
  • 浏览器一旦遇到陌生标记就立刻停机
  • 新旧实现稍微不同就互相拒绝

那这张网未必能长得这么快。

所以 HTML 早期那种“先兼容、先忽略、先把内容送到”的气质,并不只是技术风格。

它是扩张策略。

也是后面一切麻烦的伏笔。


04|问题在于,Web 很快就不满足于只做“文档互通”

如果故事只停在 CERN 和文档互链,那 HTML 后面不会变得这么狼狈。

真正让事情失控的,是 Web 很快换了赛道。

一旦 Web 走出研究机构,开始被更多人拿来发布信息、做媒体页面、做商业入口,作者的欲望就跟着变了。

他们不再只问:

  • 这段内容怎么标出来
  • 这份文档怎么链接出去

他们开始问:

  • 页面能不能更好看
  • 我能不能更控制它的样子
  • 我能不能让它更像海报、更像杂志、更像产品前台

也就是从这时候开始,HTML 身上的第一场暗战冒出来了。

一边是它原本服务的东西:

  • 结构
  • 可移植
  • 可互通
  • 文档秩序

另一边是 Web 很快硬塞给它的东西:

  • 视觉表达
  • 作者控制欲
  • 大众传播
  • 商业呈现

这场冲突比“标签怎么设计”更早。

它真正的问题是:

网页到底应该听谁的?

是听文档结构的。

还是听作者表达的。


05|RFC 1866 很像一次早期判决:HTML 不是先设计完再上线,它是先跑起来再补秩序

很多人以为早期标准都比较“古典”。

仿佛那是一个先有规范、再有实现、再有作者的纯净时代。

HTML 不是。

RFC 1866 也就是 HTML 2.0,其实已经在做一件后来会反复发生的大事:

追认现实。

它自己写得很直白,规范覆盖的大致是 1994 年 6 月以前 common use 的那批能力。

这句话一出来,很多事就清楚了。

这份规范不是凭空发明一个新世界。

它更像在说:

“现在外面已经有一批页面在这么活了,我们赶紧把这套活法整理清楚,给它一个相对统一的说法。”

这就和很多人脑子里的标准神话不一样了。

理想的标准顺序是:

  1. 先设计
  2. 再实现
  3. 再部署

HTML 很早就已经更像:

  1. 先被大家拿去用
  2. 先在网络里活起来
  3. 再由规范回来量尺寸、补路牌、立边界

这就是为什么我一直觉得,HTML 的历史从第一章开始就带着现实主义。

它不是一门在实验室里慢慢养大的语言。

它从一开始,就是在现实网络里边跑边长的。


06|所以 HTML 不是天生松散,它是天生现实

后来很多前端接触 XML、XHTML,或者别的更严格语法体系时,会自然生出一个判断:

“HTML 后来这么乱,是不是因为它一开始就不够像样?”

这个判断其实有点冤。

更接近事实的说法是:

HTML 从一开始就不是为了成为一门最整洁、最封闭、最可验证的语言而生的。

它更像一门为了快速铺开文档网络而设计的语言。

它要优先满足的,不是洁癖。

而是:

  • 足够简单
  • 足够容易实现
  • 足够容易传播
  • 足够能在异构环境里活下去

你当然可以说这导致它不够强约束。

可同样也要承认:

这正是它能迅速铺开的条件。

如果第一代 Web 一上来就要求所有人像写 XML 一样写文档,要求所有实现都严格失败,要求所有旧内容都必须完美合规,那 Web 这张网未必能长成后来那样。

所以 HTML 最早的价值判断更像:

先把世界连起来,再慢慢讨论秩序。

而不是:

先把秩序设计完,再决定谁配接入世界。


07|从这一刻开始,后面所有大戏其实都埋下了伏笔

把前面几层放一起看,你就能明白为什么 HTML 江湖 后面会一路这么热闹。

HTML 的出身,决定了它更像文档语言。

Web 的扩张,决定了它迟早会被拖去承载:

  • 大众传播
  • 商业入口
  • 视觉表达
  • 应用界面

而它早期那种“看不懂就先忽略、先让内容跑起来”的脾气,又决定了它特别容易和现实妥协。

这三件事一叠起来,基本等于把后面的剧情都预埋好了:

  • 浏览器厂商会往里面塞私货
  • 标准组织会试图重新立纪律
  • 实现者会争“谁更代表现实”
  • 浏览器最后会替无数坏页面长期兜底

所以本篇真正要立住的,不只是“HTML 最早更像文档语言”。

更重要的是这句:

HTML 从出生起,就不是在为今天这种 Web 世界量身定做的。

它更像一件原本用来处理文档的工具,后来被整个互联网不断加压、不断挪用、不断扩展,最后才被硬拧成今天这个样子。


08|HTML 一开始真正要解决的,是先把世界连起来

HTML 最早的问题,从来不是“语法该怎么设计得更漂亮”。

它最早的问题是:

怎样让世界各地的文档先连起来。

可也正因为它太适合先把世界连起来,它后来才被整个 Web 拖去做越来越多原本不属于它的事。

于是后面所有真正的大戏,都会围着同一个老问题展开:

当一个本来服务文档秩序的东西,被整个互联网拖去做大众媒介,它到底还能不能继续只当一门文档语言。

答案当然是:不能。

这门语言的江湖,就是从这里开的场。


编者注(事实核对):文中关于早期 HTML 的叙述,主要依据 1992 年 W3C 历史档案中的 MarkUp 页面、RFC 1866common use 的说明,以及 Dave Raggett 对 HTML 早期发展过程的回顾。正文里“浏览器应忽略不理解的标签/属性”“HTML strongly based on SGML”“HTML 2.0 在整理既有用法”等判断,均来自这些一手材料的合并提炼。


关键人物速览

  • Tim Berners-Lee:万维网和早期 HTML 的核心发起者。第一篇里他代表的是“先把世界文档连起来”这一层原始目标。
  • Dave Raggett:早期 HTML 历史的重要记录者与推动者之一。本文里很多关于 HTML 文档气质和 SGML 出身的判断,都和他的回顾密切相关。
  • Daniel Connolly:早期 HTML 规范编辑与推动者之一。理解 HTML 如何从实验室文档格式逐步走向更明确的规范化表达时,绕不开他这条线。

参考与延伸阅读

  1. RFC 1866: Hypertext Markup Language - 2.0
    https://datatracker.ietf.org/doc/rfc1866/

  2. Dave Raggett: A History of HTML
    https://www.w3.org/People/Raggett/book4/ch02.html

  3. CERN 早期 HTML / MarkUp 页面
    https://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/MarkUp.html