为什么有这么多"Markdown"标记语言的实现?

9

最近我在寻找一个个人Wiki,发现了Hatta,它使用Markdown简化编辑并生成HTML。我的问题是,既然已经有官方的Perl实现,为什么还会有这么多Python、Javascript、PHP等语言的Markdown实现?这样做有什么好处吗?


如果这个问题很愚蠢或主观,我道歉;我只是想了解为什么有人费心重新实现Markdown,当已经存在并且似乎足够好用的东西。 - wp123
4个回答

13
因为并非每个人都使用Perl吗?
就如同你可以步行去目的地,为什么还需要汽车和公交车一样。

抱歉,如果这是一个愚蠢的问题,但这对我来说仍不明显。当我在我的维基中输入一些文本时(我的维基是用PHP实现的),文本不能保存到文件和磁盘上,并用perl markdown进行预处理吗?也许事情不是这样运作的,我的问题毫无意义。对我来说,安装perl似乎并不是一件大事。 - wp123
5
重点不在于安装Perl,而在于让它与PHP、Python或其他语言配合起来工作。保持一种语言通常更容易。 - Paul Tomblin
6
所以,与其在原地实施它,你想要一个生成的进程,这会耗费处理时间并安装另一种语言,从而打开潜在的攻击矢量?哦,还要依赖于另一种语言,并且有时超出您的控制,永远不会更改?这根本不是一个好的组合。当然,你还假设所有软件都能保存到磁盘并调用perl,但事实并非如此。 - blowdart
好的,这些都是我没有考虑到的事情。我只是把它看作重新发明轮子,一些实现不符合规范等等。看起来比它值得的麻烦更多,但现在我看到了一些好处,特别是在个人维基之外使用时。谢谢。 - wp123

13

首先,重写要比尝试将Perl脚本与其他正在使用的开发语言集成更容易。

另一个要点是,John Gruber在过去五年中没有更新原始实现,而且有相当多的人想要一些原始版本中不存在的东西,因此他们会自己添加它,通常是在重新实现的过程中。

另一方面,无论人们如何努力推动软件复用,相当多的人至少都有一点“不要别人的”的态度,所以他们会不必要地重新实现某些东西。这并不完全是坏事,因为它可以帮助理解,并随着时间的推移导致更清晰的实现(我必须说-我比大多数人更有罪,因为我自己编写代码而不是重用已经可用的代码)。

人们通常从编写主要用于理解的代码开始-但在markdown的情况下,规范足够简单,以至于很难区分写作练习和适合生产的代码之间的区别(许多Web开发人员也缺乏知道这个区别,至少是非常好的经验)。


13

Markdown的实现方式太多了,就像Scheme编程语言的实现一样:

  • 看起来是一个快速、有趣的项目。

  • Markdown看起来真的很好,但我只想做一个微小的改进……

将可读ASCII转换成排版文档或HTML的问题已经存在很长时间了。我所知道的第一个实例是Richard J. Lipton和Robert Sedgewick在1990年的技术报告中提出的“无需格式化即可排版”。如果有人有这份报告的副本,我会很高兴得到一份……

我最喜欢的Markdown重新实现是Pandoc,它可以相互转换大量格式。


Pandoc看起来很不错,功能也很强大。至于从纯文本排版方面来说,我认为LaTeXnotech要早十年左右。至少维基百科似乎同意我的观点。 - Christoph
@Christoph,LaTeX标记或TeX本身都不是“平凡”的。如果我能得到Notech报告的副本,我会尝试的。 - Norman Ramsey
@Norman 看起来,我们对明文的定义有所不同,但你最初说的是“可读ASCII”,而不是明文,所以可以理解,这一点我认输了。 :-) - Christoph

8

有很多原因,Blowdart提到了可用性问题,而我要提到的是让我总是重复造轮子的原因:乐趣

有些人觉得自己亲手编写某个东西很有趣,不管是为了娱乐还是为了提高他们在特定语言或一般编程技能方面的水平。

我已经用大约8种不同的编程语言编写了IRC机器人,这帮助我将旧技能转移到新语言,并将新技能带回到以前使用的语言中!

没有什么事情是人们没有因为好玩或者只是想做而没有复制的,或者因为他们对原始实现或想法不满意。

有许多Pidgin的克隆版本,OpenOffice的克隆版本,整个Linux发行版和其他操作系统的克隆版本,只是因为人们想这样做。

有多个编程语言的实现,如Ruby、Python、C、C++、Haskell、Basic和Javascript,因为人们想将它们与Java(JRuby、Jython)或.NET(IronRuby、IronPython)集成,或者只是想编写自己的编译器和解释器以进行学习。

编程不仅仅是全部业务和“如果没有就制造它”,对许多人来说,这是一种爱好。

我肯定会很快编写自己的Markdown实现!


1
如果我有你一半的热情,我想我会成为一个更好的程序员。感谢您的贡献。 - wp123

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接