2004年,约翰·格鲁伯(John Gruber)花了3天时间写出了Markdown的初版语法。20年后,这个"极简标记语言"已经膨胀到让它的创造者在2022年公开吐槽:"我设计的初衷是让人写博客,不是让你们写论文。"
但问题不在这里。真正让开发者集体破防的是:我们明明想要一个"一眼就能看懂输出结果"的工具,却得到了一个同一行字能用6种方式加粗、而且每种都"合法"的语法怪物。
「极简」是个谎言:两套语法,同一行HTML
来看两段Markdown代码。第一段用井号写标题、用星号写斜体、用下划线写粗体:
# Hello
*I am an*
__Unambiguous__
> Grammar
第二段用等号写标题、用下划线写斜体、用双星号写粗体:
Hello
=====
_I am an_
**Unambiguous**
> Grammar
这两段代码扔进任何标准解析器,吐出来的HTML完全一致。格鲁伯当年想给非技术用户"多种选择",结果给程序员埋了20年的雷。
CommonMark项目——这个2014年成立、试图给Markdown"立规矩"的组织——在规范文档里被迫承认:「存在多种方式表达同一语义是Markdown的设计特性,而非缺陷。」
功能蠕变:从写博客到图灵完备
Markdown最初只有7个核心语法:标题、段落、列表、链接、图片、粗体、斜体。现在呢?
GitHub Flavored Markdown加了任务列表、表格、删除线、自动链接。Obsidian加了双向链接、标签、嵌入块。Notion把它做成了数据库。VuePress和Docusaurus把它变成了静态站点生成器的核心。
每个平台都在Markdown身上嫁接自己的方言。开发者阿明·罗纳克(Amin Ronak)在2023年的技术博客里写:「我在3个不同的代码仓库里用了3种不同的Markdown表格语法,因为CI系统、文档站点和GitHub预览各认各的。」
这就像C语言的设计者说"我们只需要指针和结构体",结果20年后每个人都在用不同的宏定义实现面向对象。
为什么我们还离不开它?
答案藏在两个数字里。
Stack Overflow 2023年开发者调查显示,Markdown是技术文档领域使用率第二高的格式,仅次于纯文本。GitHub 2022年年度报告提到,平台上超过60%的README文件使用Markdown。
网络效应已经锁死了迁移成本。你的笔记、你的文档、你的项目首页、你的技术博客——全在这个语法泥潭里。
CommonMark规范的维护者约翰·麦克法兰(John MacFarlane)说过一句很克制的话:「Markdown的成功在于它的可读性,而非它的严谨性。」换句话说,它赢在了"写起来像聊天",输在了"读起来像猜谜"。
替代方案都死在了哪里
过去10年,至少有十几个项目试图取代Markdown。AsciiDoc语法更严谨,但学习曲线陡峭。reStructuredText功能强大,但可读性像在读配置文件。Org Mode在Emacs用户里封神,出了这个圈子没人认识。
2021年,开发者埃里克·普罗马(Eric Promislow)在Hacker News上发起过一个投票:「如果明天所有工具都支持一种新标记语言,你会选哪个?」最高赞回答是:「我会继续用Markdown,因为所有工具都支持它。」
闭环了。
格鲁伯在2016年接受The Changelog播客采访时被问到:「如果重来一次,你会改变什么?」他停顿了几秒,说:「我可能会把表格语法写进核心规范。但那样的话,它就不再是Markdown了。」
这个回答本身就是Markdown的隐喻:它之所以还活着,恰恰是因为它拒绝变得完美。
你现在用的笔记工具,是原生支持Markdown,还是偷偷把它转成了自己的格式?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.