最近我在寻找一个个人Wiki,发现了Hatta,它使用Markdown简化编辑并生成HTML。我的问题是,既然已经有官方的Perl实现,为什么还会有这么多Python、Javascript、PHP等语言的Markdown实现?这样做有什么好处吗?
首先,重写要比尝试将Perl脚本与其他正在使用的开发语言集成更容易。
另一个要点是,John Gruber在过去五年中没有更新原始实现,而且有相当多的人想要一些原始版本中不存在的东西,因此他们会自己添加它,通常是在重新实现的过程中。
另一方面,无论人们如何努力推动软件复用,相当多的人至少都有一点“不要别人的”的态度,所以他们会不必要地重新实现某些东西。这并不完全是坏事,因为它可以帮助理解,并随着时间的推移导致更清晰的实现(我必须说-我比大多数人更有罪,因为我自己编写代码而不是重用已经可用的代码)。
人们通常从编写主要用于理解的代码开始-但在markdown的情况下,规范足够简单,以至于很难区分写作练习和适合生产的代码之间的区别(许多Web开发人员也缺乏知道这个区别,至少是非常好的经验)。
Markdown的实现方式太多了,就像Scheme编程语言的实现一样:
看起来是一个快速、有趣的项目。
Markdown看起来真的很好,但我只想做一个微小的改进……
将可读ASCII转换成排版文档或HTML的问题已经存在很长时间了。我所知道的第一个实例是Richard J. Lipton和Robert Sedgewick在1990年的技术报告中提出的“无需格式化即可排版”。如果有人有这份报告的副本,我会很高兴得到一份……
我最喜欢的Markdown重新实现是Pandoc,它可以相互转换大量格式。
LaTeX
比notech
要早十年左右。至少维基百科似乎同意我的观点。 - Christoph有很多原因,Blowdart提到了可用性问题,而我要提到的是让我总是重复造轮子的原因:乐趣
有些人觉得自己亲手编写某个东西很有趣,不管是为了娱乐还是为了提高他们在特定语言或一般编程技能方面的水平。
我已经用大约8种不同的编程语言编写了IRC机器人,这帮助我将旧技能转移到新语言,并将新技能带回到以前使用的语言中!
没有什么事情是人们没有因为好玩或者只是想做而没有复制的,或者因为他们对原始实现或想法不满意。
有许多Pidgin的克隆版本,OpenOffice的克隆版本,整个Linux发行版和其他操作系统的克隆版本,只是因为人们想这样做。
有多个编程语言的实现,如Ruby、Python、C、C++、Haskell、Basic和Javascript,因为人们想将它们与Java(JRuby、Jython)或.NET(IronRuby、IronPython)集成,或者只是想编写自己的编译器和解释器以进行学习。
编程不仅仅是全部业务和“如果没有就制造它”,对许多人来说,这是一种爱好。
我肯定会很快编写自己的Markdown实现!