你讨厌XML吗?
速览
本文回顾了2010年时开发者对XML格式的普遍不满,指出其冗长、解析复杂等缺点。文章并非单纯吐槽,而是反思XML在现代软件开发中的角色,并探讨其替代方案。它揭示了技术选型中常见的情感偏好与实际效率的冲突。
AI 深度解读
背景
2010年7月,瑞典数字图书馆专家 Sigfrid Lundberg 在他的个人博客 "Sigfrid Lundberg's Stuff" 上发表了这篇题为《Do you hate XML?》的文章。Lundberg 曾在丹麦皇家图书馆和瑞典隆德大学图书馆从事数字图书馆领域的互联网编程与软件开发工作,于2023年5月退休。这篇文章源于他十五年从事数据互操作性、可移植性和长期保存(尤其是图书馆元数据)相关工作的经验,以及对2000年代初XML热潮的亲身见证。文章发布在Hacker News上引发讨论,反映了当时开发者社区对XML技术的复杂情绪。
核心内容
Lundberg 回顾了自己与XML的十五年关系。早期他像"塔利班一样狂热"地推广XML,认为自己是2000年代初至2004-2005年XML热潮的推手之一(参见文中图1:包含"hate XML"短语的网页数量从2004年Applied XML Developer's Conference后急剧上升,随后趋于平稳)。但后来他态度变得温和,仍然视XML为首选的数据建模工具。
他指出,一旦掌握了一项技术,你就无法保持强烈的情感——至少无法保持积极情感。你会看到其优点和缺点,甚至可能随着时间变得更消极。他把人与技术的关系比作人际关系:初期是热恋,如果幸运,之后会有更深的友谊和爱,持续更久。
早在2000年,他的朋友就将与XML的关系描述为"angle bracket fatigue"(尖括号疲劳),意思是"我讨厌输入XML,因为它的语法太糟了"。
文章重点引用了2004年Applied XML Developer's Conference上 Chris Anderson(SimpleGeek)的演讲《Developers Hate XML》。Anderson 的核心抱怨是:XML必须用专用工具和语言(如XSLT)在隔离中处理,开发者必须成为与应用程序无关的"领域专家"。Lundberg 认为这个观点有道理,但觉得XML和SQL在此方面并无不同:任何对象-关系建模工具都面临同样问题——进行建模的开发者必须成为领域专家。然而,人们很少为RDBMS模式进行大规模标准化,却为XML模式做了很多。
Lundberg 指出XML技术提供了RDBMS所不具备的互操作传输语法——这可能是世界上大部分XML都存储在RDBMS中的原因。
他还讨论了"恨"这个词的文化差异。作为斯堪的纳维亚人,他说"恨"是认真的,但他不确定英美世界是否如此,也不确定年轻斯堪的纳维亚人是否如此。作为中年学者,他认为用"恨"来描述不喜欢和烦恼可能不合适。他认为人们对XML、SQL、noSQL等技术的爱恨,更像是爱恨比波普、流行或嘻哈音乐,而不是爱自己的孩子、妻子或母亲。
关键要点
- 技术情感的自然演变:初学者容易狂热,随着深入理解会看到缺点,情绪趋于平和甚至消极。
- "尖括号疲劳":XML的语法(大量尖括号)是开发者最直观的抱怨源。
- 领域专家难题:XML处理需要开发者成为领域专家(如编目、文本编码),而不仅仅是程序员,这与SQL等工具没有本质区别,但XML更明显地暴露出这一矛盾。
- XML vs RDBMS:XML的主要优势是作为互操作传输语法,实际应用中大量XML存储在关系数据库中。
- 文化语义通胀:"恨"一词在不同文化中含义不同,在技术讨论中常被用作情绪化的代码词,并非真正的仇恨。
- 标准化惯性:人们愿意为XML模式进行大规模标准化,却很少为RDBMS模式做同样的事。
意义与影响
这篇2010年的文章以资深技术人的视角,对当时弥漫在开发者社区的"仇恨XML"情绪进行了冷静而深刻的剖析。它没有简单地辩护或谴责XML,而是揭示了技术态度的生命周期、领域知识与工具使用的内在矛盾,以及语言文化对技术讨论的扭曲。文章提醒我们,技术讨论中的强烈情绪(尤其是"恨")往往反映出工具与使用场景的错配,而非工具本身的绝对优劣。
这一观点在之后的十几年中得到了验证:XML在Web服务、文档标记、元数据交换等领域仍被广泛应用(如图书编目、Word文档格式、SVG、XHTML等),但其语法和复杂性促使了JSON、YAML、Protocol Buffers等更轻量级替代方案的崛起。同时,领域专家难题也普遍存在于所有需要严格数据建模的技术中(如Schema、RDF、甚至现代TypeScript类型定义)。Lundberg 关于"技术关系如同人际关系"的隐喻,为理解开发者对框架、语言、工具的忠诚与厌倦提供了富有洞见的框架。
