弗拉基米尔·基谢廖夫 ⋯ 文章

YAML 的怪癖。


这篇是《JSON 的怪癖》的续篇,我在那篇里分享了一些关于 JSON 的有趣内容。

这一篇讲 YAML,也就是 Yet Another Markup Language(又一种标记语言),可它并不是标记语言。

照片:Francesco Ungaro,来自 Pexels

名字

它起初(见 https://yaml.org/spec/history/2001-08-01.html)叫“Yet Another Markup Language”,后来改名为“YAML Ain’t Markup Language”(YAML 不是标记语言)

诞生

尽管有些企业级开发者(我遇到过的那些)至今仍以为 YAML 是一项新技术,它的历史其实早在 2004 年就开始了,这让它最多比 JSON 被正式发现的日期早 4 年。

火星任务

据 GitHub 介绍,NASA 在火星 2020 直升机任务中用到了 YAML。

YAML 曾经几乎是 JSON 的超集,后来成了严格意义上的超集(2009 年,YAML 1.2)

不过,根据 https://yaml.org/spec/1.2.2/#12-yaml-history 里的历史记载,这起初纯属巧合。

YAML 的目标

在 https://yaml.org/spec/1.2.2/#11-goals 列出的 YAML 目标里,你找不到“易于编写”这一条——人类可读性却是第 1 优先级。我也说不清为什么,但我觉得这件事很好笑。

能力越大,电费越高

YAML 很强大,用的时候得小心,因为在某些情况下它可能被坏人利用 https://tenderlovemaking.com/2013/02/06/yaml-f7u12.html(早在 2013 年,对 YAML 的热爱和不安全的解析器就都受到了挑战)

表示“是”和“否”的写法有很多

在 YAML 里,表示“是”和“否”的写法有很多:y|Y|yes|Yes|YES|n|N|no|No|NO
|true|True|TRUE|false|False|FALSE
|on|On|ON|off|Off|OFF(https://yaml.org/type/bool.html)。挪威人比谁都更清楚这一点,因为 no 也是一个常用来表示挪威语的代码。https://noyaml.com 上还列出了许多其他有趣的例子。

但我们依然爱它

链接

https://yaml.org——YAML 的官方网站

原文发表于 Medium:https://medium.com/@nettsundere/the-peculiarities-of-the-yaml-85b2e19ebcd4