為什麼Markdown在2004年才出現,而推廣更晚?

感謝目前幾位的回答,如果問題針對Wiki Markup,那麼可以得出以下結論:Wiki Markup因為21世紀初建立的Wikipedia而流行,該標記語言創造於1995年,用以服務於第一個維基網站WikiWikiWeb,其渲染目標是1993年出現的HTML,前置技術是1986年標準化的SGML。

但是Markdown的定位似乎更接近於ReadMe/Man類文檔,而非二十年後出現的網頁標記語言……「為什麼終端時代沒產生高可讀標記語言」這一困惑仍然不能釋懷。—— 2017-01-24 15:30:00

————以下正文————

這種具有Readable As-Is特性的標記語言出現比HTML晚11年,比LaTeX晚19年,比Troff晚33年。Markdown的廣為使用還要推遲到2012年前後,是Unix誕生的41年後。

作為一種渲染前就自帶排版的,高度可讀十分易寫的純文本格式,為什麼沒能在命令行時代結束前出現?是因為什麼前置條件還不存在,還是僅僅因為恰好沒有人如此設計?—— 2017-01-13 14:30:00

————補充————

Markdown吸取了90年代初的Setext等標記語言,這些標記語言的前身是90年代前定型的Posting style,用於Usenet和Electronic Mail——後者的名字在1993年被email取代。

然而即使對Markdown如此溯源,仍然不能解釋為什麼沒能比歷史更地早出現一種與Markdown異曲同工的、清爽易讀的標記語言?又或者即使出現了,沒能早早定型併流行開來?—— 2017-01-23 16:30:00


90%的人學會寫MarkDown是從寫README.md開始的吧,所以說,可能是世界第一大男同性交友社區,帶火了它。


先謝邀。

我覺得更奇怪的是 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 的真子集寫文檔,結果還是清爽易讀並且可移植的: https://gist.github.com/dupuy/1855764 。很多非文檔處理的工具宣稱支持一部分 Markdown 的標記,能給文字加個粗體斜體什麼的,實際上支持的就是一小個 Markdown/reStructuredText/AsciiDoc 共通子集。

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


一門語言能不能流行,除了設計者的努力,還要看歷史的進程。當然有個好爹也是很重要的。


我個人倒是覺得回顧歷史的話這些標記語言出現的時間點倒還都挺合理的。

一開始大家都是純文本,不論是郵件列表還是 Usenet ,通行的一些慣例也就是後來 Setext / Markdown 的起源。

93年的確出現了 HTML ,但回顧最早的 HTML ,其實(至少對於程序員來說)還是相當可讀的。標籤很有限,而且也明顯看出設計時就為了讀寫方便使用了很縮略的形式:p, b, i, a, ul, ol 等等。那時候 HTML 還都是純手寫,用的瀏覽器也很多是終端下的,HTML 最早的貢獻其實主要在於其「超」文本(尤其是強大的「鏈接」功能顛覆了整個互聯網的使用方法,雖然如今看來稀鬆平常)。CSS 都還未出現,更別提什麼 JS 。可以想見,那樣的環境下對於介於 HTML 和純文本之間的「輕量」標記語言並無迫切需要。如今還有時可以看見一些學院派的老黑客/教授們喜歡手寫 HTML 寫文章,那些源代碼看起來其實並不比 Markdown 難讀。

然而,96年誕生了 XML 、 CSS,桌面時代以及隨後整個 .com 泡沫的到來,改變了一切。像是 FrontPage 這樣的工具、PHP 之類的語言,以及較為「現代化」的瀏覽器的出現,都劇烈改變了 Web 。越來越多普通人開始使用 Web ,會去關心、閱讀 HTML 源碼的人比例越來越少,HTML 已經開始變得極為臃腫複雜,不論是標準所包括的語義(相比最初)還是市面常見的 HTML 源碼的樣子,已經不再適合直接閱讀了。

Mediawiki、 Markdown (其實還有 Ruby 的 Textile 和 Python 的 reST ,不過這兩個更像是從 HTML 中吸取一些功能加入注釋,也有一些和語言本身比較配合的特性和風格)等等開始嘗試精簡 HTML ,保留實際內容創作中最常用的功能並優化符號,成為一個介於純文本和 HTML 之間的過渡。我個人在2010年前其實是更熟悉 Mediawiki 的,原因自然是 Wikipedia 的流行。後來 Markdown 逐漸成為了壓倒性的最流行輕量標記語言,我猜測和10年前後 GitHub (Pages) 的誕生及爆炸性增長有關係(現在很多人習慣寫的其實也是 GitHub Flavored Markdown ),而且我個人也覺得 Markdown 的語法比 Mediawiki 好看好記。一旦流行起來形成應用——工具/庫的正循環之後就勢不可擋了,然而遺憾的是標準化也就真的無望了……

P.S. 「命令行時代」其實從未結束,Markdown 本身可以說就是根值於命令行,對普通用戶友好的一些編輯器都是很後期的事情了。


mediawiki,第一個版本是2002年,也很流行。


我估計是之前大家不太關注文檔的可讀性。考慮一下HTML是93年出現的,而作為數據表達的變種XML是96年才有第一版,而同樣以可讀性作為特性的yaml是01年出現的,這麼看來markdown其實出現的並不太晚。

另外一種可能是早期程序文檔並不多,那麼寫起來很繁瑣的man格式或者info格式也不算不能接受,而一旦大家開始大規模寫文檔了,可讀性的問題才被關注。


個人覺得Markdown的流行跟前端的火爆不無關係,


因為github唄……相當於交友網站的個人資料寫法


這其實是兩個問題。

早期互聯網的簡陋眾所周知,那種古樸的感覺,並不需要一門簡潔版本的標記語言。

而後期推廣開,我覺得和兩個因素有關。

程序員的推廣。相比於普通人,程序員的網路話語權要大很多,他們在使用過程中進行言傳身教,擴散到像我這樣的文藝工作者——對文檔簡潔寫著舒服有很高的要求。於是業外人士開始使用了。

另外就是影響程序員的那個所謂的交友網站了:當你看到一個大牛在用這玩意兒寫文檔的時候,任何一個小菜鳥程序員都會心生膜拜然後主動研究一下吧………

但是現在發展的也不好,沒有一個類似於office word這種權威甚至制霸級別的程序啊。


我覺得吧,是趕上了返璞歸真的好時代。

我們從很弱的文本界面爬到富文本、富媒體,現在到處充斥著華而不實的富媒體,人們終於厭倦了,希望化繁從簡,正好有個看起來不錯又簡單易上手的markdown,又被GitHub之類流行的社區一推,就流行開了。

我認為如果GitHub不推markdown而是其他的,markdown就沒這麼流行了。

另外,關於20年前為啥沒有markdown?我覺得大概是當時文本界面太土了,渲染能力也差。實際上markdown是因為能渲染出美觀的HTML才這麼好看的。20年前我們在用ASCII拼圖案,不知道nfo你見過沒?不是Windows系統信息那個nfo,是一種ASCII文本那種。現在好像只有某些老牌geek破解組織的readme還用nfo。


Markdown -- GitHub欽定的標記語言


對於解析度是640x480的顯卡和顯示器, 字元終端能夠顯示的字元長度和行數非常有限,大概是80列24行,那時字元都是固定大小的,字元的樣子都是在字元發生器里。 沒有字體大小和粗體,所以不需要什麼格式。

DOS下的WPS字處理系統都不是所見即所得的。寫個README還要什麼格式?

當然圖形化操作系統有Macintosh,也有所見即所得的編輯。那些都不便宜。


客戶需求是推動產品的關鍵因素……


歷史上readable的東西是列印在紙上的,不顯示在屏幕上。


推薦閱讀:

請問本地的html文件如何生成網頁文件?
Medium上有那些值得關注的前端領域的作者?
css樣式的百分比都相對於誰?
為什麼a標籤中使用img後的高度多了幾個像素?

TAG:HTML | Linux | Unix | GitHub | Markdown |