百科问答小站 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 而不是另取一個名字,這在我心裏永遠是一個迷……




  

相关话题

  从事嵌入式行业的你,现在年薪多少,有什么经历想和大家分享? 
  为什么 Linux 指针越界时程序会立即被中断,而 Windows 不会? 
  腾讯以及各大厂的 C++ 开发环境是什么样的? 
  有哪个Linux操作系统推荐? 
  安卓1.0明显是基于linux内核开发的,安卓1.0是不是linux套壳? 
  如何看待微软 Build 2019 上发布的新 WSL2? 
  Linux主机中增加一块内存条后,物理地址如何扩展? 
  开源统计软件piwik公然将西藏从中国地图上分离出去,怎样说服作者把它改回来? 
  如何看待GitHub pages在20年3月26日被大范围中间人攻击还留下了QQ号? 
  Linux中使用sudo产生文件的所有者究竟是? 

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





© 2024-05-18 - tinynew.org. All Rights Reserved.
© 2024-05-18 - tinynew.org. 保留所有权利