Markdown 还是 reST
====================
*胡言乱语,未完待续,之所以发出来是因为不想再像其他文章一样,一直在草稿箱里直到只剩删除的价值。*
什么是什么?
——————–
Markdown和reST都是标记语言(markup languages)。什么是标记语言?等会儿再说。
Markdown就叫Markdown,而reST是个缩写,reST的全称是reStructuredText。
什么是标记语言?
~~~~~~~~~~~~~
我们知道作为直接映射自然语言的文本语言在直接书写为纯文本以后,实际上这样文本的所能表达的意义往往不能达到我们需要的标准。
我们引入标记,是为了扩展语义。最简单的就是空格、换行、符号。 但是这还是不够用。 所以我们有了更完备的标记语言,比如LaTex、XML,但是问题来了,这样过于复杂了,首先是书写上复杂了,比如XML,已经很难直接去手动编辑原始 XML文本文件了,只能依靠工具了。原始文本的理解难度也增加了,比如你要看懂一个复杂的LaTex源文件确实需要一些功夫,原本文本直接表意的功能就丧 失了。
什么是Markdown?
~~~~~~~~~~~~~~~
什么是reST?
~~~~~~~~~~~~~
都是完美惹的祸
——————-
我为什么要说这个题目呢?很难表达清楚,只是隐隐约约觉得需要喷,或者说是吐槽。
而且,这篇文章成稿已久,我觉得如果想很多稿子一样放到只有被删的价值,那还不如一吐为快。
尽快,我已经知道这又是一篇断断续续毫无章法的胡言乱语。那么开始吧。
那么,我想说什么呢?
我想说
在这个不完美的世界,作为力求完美的人,真TM的是个令人焦虑的事情。
现状
————-
现状就是很多事实交织在一起,你不去伸出手摸摸,根本无从了解,当然,就算是摸了也不免瞎人摸象,当然,听我说那就更是隔靴搔痒了。
首先说Markdown。
简单的说,单单从语言特性方面分析,Markdown现在火的没有道理,列表里面的大伙也讨论过这事,结论是最大的原因是Github的强烈推广,Markdown算是Github的官方标记语言了。
不得不说ReST有一个比较悲剧的名字,用全称太长,用缩写如果用rest,很容易和同字母英语单词“其余”混淆,如果用REST,呃,REST也 早有了约定俗成的含义,指的是一种网络接口的设计风格。所以,大家一般就用ReST,或者用rst来称呼reStructuredText。
ReST是Docutils的标记语法,Docutils是Python世界的文档工具集。
也因为这样ReST在Python界中被广泛应用,比如Sphinx–这个基于Docutils的文档工具–事实上作为Python中的标准文档工具被广泛使用了。比如Python官方文档。因为Sphinx可以生成多种格式,
设计思路对比
—————
先来看一下Markdown,
官方的说法直截了当,Markdown就是个 text-to-HTML 的工具。
所以说,从一开始,Markdown 就确立了它与HTML的亲缘性。这是 Markdown 的设计立足点。
Markdown包含两个部分,
1. 文本结构化格式,也就是标记语言
2. 另外与之配套的生成HTML的 perl 程序。
作为标记语言,Markdown的目标很明确,就是为了更简答的写html。
相比与 Markdown , reST 显然是经过精心设计的。
reST的目标是,建立一套标准文本结构化格式用以将文档转化为有用的数据格式。
不得不说的是这句话一点都不Pythonic,和政治书上的句子似的。
所以Pythoner给出了更具体的阐述:
按重要程度依次罗列:
1. Readable,是可阅读的,reST的原文本必须可以很容易的直接阅读而不需要了解reST的标记语法。
2. Unobtrusive,不突兀的,reST 所使用的标记应该是尽量简单并且不突兀的。越是常用的标记越应该简单和不碍眼的。不太常用的标记,或者是表达特殊意义的标记应该鲜明。
3. Unambiguous,没有歧义的,标记规则是确定的,不能再重载定义,对于给定的一个输入,只有一个可能的输出,包括输出错误。
4. Unsurprising,不出乎预期的,非“魔法”的,标记语言可以不输出不想输出的内容。所以,需要一个方式(标记)作为标记不期望输出标记之用。比如,当你想要向别人展示reST源代码时,你要标记这块reST源码不需要被结构化。
5. Intuitive, 直观的,标签应该尽可能的容易被记住。人们可以在文档中直接使用。
6. Easy,简单,
通过一段时间的使用,我觉得Markdown和reST都可以说达到了他们的既定目标。
进过一段时间的使用,我觉得reST基本达到了预定的目标。
权衡的艺术
~~~~~~~~~~~
通过以上的比较,我们发现,reST承载的目标要比 Markdown 多很多。最重要的不同就在于 Markdown 只是为了输出 HTML ,而 reST 的目标之一就是可以转化为其他格式。
当然,说权衡是艺术,还不如说其实就是瞎子摸象弄出一些聊以自慰的藉口罢了。
不过从已经获取到的相关信息,我们可以初步做一个判断,用Markdown作为中心书写工具(一般是配合Pandoc)相对于使用reST做中心书 写工具是不佳的。何况,又引入了新的工具(Pandoc)和语言(Haskell),这都是非必要的正熵,背离了KISS原则。
说了这么多其实就一句话:
我们选择标记语言实际上是在表意与简便之间做权衡,我们的理想目标是即表意丰富又使用简便。
但是,这个世界上鱼和熊掌得兼的事情不多,往往我们只能根据自己的需要去寻找一个最优平衡点来决策。
其实,我只是想写个reST就是好啊就是好的吐槽文,没想到还是逼着自己去把相关的资料翻阅了一下,查阅这些资料不是为了更好的吐槽,是为了让自己心里更踏实一些。
另外这篇文章同时符合markdown和reST语法。