百科问答小站 logo
百科问答小站 font logo



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

  

user avatar   farseerfc 网友的相关建议: 
      

先謝邀。

我覺得更奇怪的是 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 方言的共同子集 vanilla markdown ,並且限制不用 raw HTML ,力求清爽可移植的目的,結果你會發現,你在用的你以爲的 「Markdown」 實際上就很接近 Setext 系 reStructuredText/AsciiDoc 它們的子集。甚至有人提倡只用 reStructuredText 和 Markdown 的真子集寫文檔,結果還是清爽易讀並且可移植的:

gist.github.com/dupuy/1

。很多非文檔處理的工具宣稱支持一部分 Markdown 的標記,能給文字加個粗體斜體什麼的,實際上支持的就是一小個 Markdown/reStructuredText/AsciiDoc 共通子集。

至於爲什麼這麼多工具只是用了 Markdown 的一個子集就敢宣稱支持 Markdown ,爲什麼那麼多加了無數擴展變得雜亂無章的方言都仍然敢叫自己是 Markdown 而不是另取一個名字,這在我心裏永遠是一個迷……




  

相关话题

  shell程序中 2> /dev/null 代表什么意思? 
  如何看待华为1100亿行规模的代码库? 
  如何在 GitHub 上写博客? 
  FreeBSD 还有前途吗? 
  龚神给微软 Linux 子系统写的支持 DirectX 9、11的代码到底属不属于“驱动”? 
  如何评价Linux发布新的CoC (Code of Conduct) 后引发的部分开源社区的不满? 
  jpeg图片在网页中引用时为什么只能写成jpg? 
  为什么没有人庆祝Unix Timestamp到达144 4444444? 
  为什么说linux桌面不稳定、差呢? 
  semaphore和mutex的区别? 

前一个讨论
为什么"俄罗斯皇帝"的英文"Emperor of All Russia"要带"All"一词?
下一个讨论
如何评价轮子哥认为alphago(master)是靠暴力下棋?





© 2025-05-30 - tinynew.org. All Rights Reserved.
© 2025-05-30 - tinynew.org. 保留所有权利