轻松记录您
灵感和创意

为什么Markdown在2004年才出现,而推广更晚?

我觉得更奇怪的是 Markdown 这种方言衆多、实现杂乱无章的 markup 这几年怎么就突然火了,连一个手机笔记、一个聊天软件,都开始标榜自己支持 Markdown 了……

题主提到了 Setext ,其实 Setext 这一系的标记语言香火一直未断,从 90 年代早期的 Setext 到 90年代 末期的 StructuredText 再到新千年的 reStructuredText ,这一系在 Python 社区经由 Python 标准库文档和 Sphinx 工具链发扬光大,很多 python 社区的人都喜欢用并且一直在用,从早期 BBS 和新闻组走到论坛再走到源代码文档,最终达到足够作爲排版标记语言的等级。

另一系 AsciiDoc 也是类似,最早就从排版标记领域发展,反攻工具文档领域,也有不少人喜欢。

还有一系 Textile 是从论坛标记起家,同样有不少受衆。

然后还有单独的一支 org-mode 和上述几只的起源不同,是从 emacs 中日常记事笔记起家的,不过最终大家殊途同归,都能用于网络发佈和文档排版。

看别人回答,有人提到 MediaWiki/HTML ,包括还没有人说的 BBCode,插说一句,前述 lightweight markup 和后面这些 markup 有一个本质不同, lightweight markup 犟调不通过格式转换也能作爲纯文本阅读,这和 HTML/MediaWiki/BBCode 这些通常最终目的都是格式转换的结果的 markup 很不一样。

回表 Setext 家族,这些 lightweight markup 的起源都有个明显的特点,就是从特定领域用途发展到通用文档格式。Setext 的领域是 BBS , StructuredText 的领域是 Zope 论坛, reStructuredText 的领域是 Python doc,AsciiDoc 的领域是出版,Textile 的领域是 PHP 论坛。从这些领域走出来之后,逐渐壮大功能,尤其是 reStructuredText 和 AsciiDoc 这两支出于出版业排版的需要,提供了丰富的后端格式(tex/DocBook/manpages等),具有了各种插件扩展功能,按说没有一点逊色于 Markdown

这一家族标记语言的发展还有一个特点,就是要么具有单一的标准实现,要么有一个严格约束的标准和官方参考实现,语言内特性完备,工具实现间的兼容性不是问题。

反观 Markdown ,因爲支持嵌入 raw HTML 标记,一开始的出发点就是作爲转换到 HTML 的前端标记语言,使得它不可能轻易获得别的后端格式。换句话说它在 lightweight markup 里面是个另类,完全爲转换到 HTML 而生。因爲爲转换结果而生,其排版格式常常具有「不确定性」,写 Markdown 的时候经常不知道写的这行 markup 会被工具们转换到什么样子,于是你看 Markdown 又有了各种各样的 WYSIWYG 编辑器和 live-preview 环境。

实现方面,因爲 vanilla Markdown 功能实在有限,于是各种实现爲了完善功能都大相径庭,最常见的 Github-flavored Markdown 和 CommonMark 就很不一样……每个 Markdown 实现都还有各自一套扩展语法,有的加入点数学公式,有的加入点表格,有的混入点源代码块,最终结果是针对一个工具写的 Markdown 基本不可能无损地被另一个「支持」Markdown 的工具处理。并且因爲前述 Markdown 标记的「不确定性」, live-preview 编辑环境下写出的 Markdown 往往不能和正式使用的工具兼容,在组合使用各种工具的时候又是一堆头疼的问题。不像 reStructuredText/AsciiDoc ,因爲语法统一确定,扩展机制完善并且相互兼容,写 reStructuredText/AsciiDoc 常常不需要 live-preview ,脑子里想到的排版和工具输出的排版大体结果是一致的。Markdown 方言衆多实现杂乱还被称之爲「清爽易读」,实在不知道该从何吐槽。

未经允许不得转载:坚果云Markdown » 为什么Markdown在2004年才出现,而推广更晚?
分享到: 更多 (0)

坚果云Markdown轻松记录您 灵感和创意

坚果云Markdown下载坚果云Markdown介绍