你以為文言編程只是鬧著玩?三個月后,人家IDE、教程、包管理器都有了
用文言文寫的官方編程教程《文言陰符》,類似 pip 那樣的包管理工具「文淵閣」,還有文言編程開源 IDE「文言齋」,文言編程語言已經(jīng)這么成熟了?
機器之心曾介紹過 CMU 計算機專業(yè)大四學生 Lingdong Huang 的文言編程項目,因為完全采用文言文的方式編程,該項目受到很多開發(fā)者的關注,在 GitHub 上開源 4 天就獲得兩千星,目前更是有 15K 的 Star 量。
大家都說 Star 量是推動項目更新的第一生產(chǎn)力。這不,經(jīng)過三個月的時間,這個項目就已經(jīng)發(fā)展成了一門完整的「編程語言」。它有文檔、有 IDE、有第三方庫、有官方教程、有代碼高亮方案等等,所以還要啥 Python,文科生「玩轉(zhuǎn)」編程的首選語言就是它。

因為目前文言編程已經(jīng)有了挺多更新,本文后面主要介紹 IDE、官方教程和第三方庫,看它如何一步步升華到合格的編程語言。
文言齋:開源 IDE 來了
之前文言編程不是沒有 IDE,我們可以在線使用,并編譯。但當時 IDE 并沒有開源,它的高亮也有點「神奇」,在輸入與編輯過程中了并不能高亮,只有編譯后才能修改語句的顏色。而且有些中文會被認為是關鍵詞,并不能直接使用,例如機器之心的「之」,如下是我們 2019 年年會的推文,它采用的就是當時的在線 IDE。

運行后會輸出「今日無文,請閱「機器之心 Pro」」。
當時在線 IDE 似乎還不會報錯,編譯出錯只有一個反應「輸出為空」,而現(xiàn)在,這個新開源的 IDE,它已經(jīng)會在線高亮、返回編譯誤差了。

現(xiàn)在的 IDE,用著已經(jīng)算比較舒服了,我們可以部署或嵌入到其它地方,甚至可以通過 API 直接調(diào)用。每次調(diào)用,在 URL 中傳入標題、代碼以及其它各種缺省配置就行。
在線 IDE 地址:https://ide.wy-lang.org/
如下是當前 IDE 整體展示,其最左邊導航欄主要分為用戶代碼腳本、示例腳本、第三方庫列表三部分。值得一提的是,相比當時十來個示例腳本,現(xiàn)在的官方腳本已經(jīng)有近 50 個,連「水墨畫」的腳本都有。

此外,文言代碼除了編譯為 JS 代碼,IDE 上還可以選擇編譯為 Python 或 Ruby 代碼。只不過當前的在線 IDE 并不支持以 Python 或 Ruby 語言作為后端執(zhí)行文言代碼。
整個 IDE 的主題、編譯方式、展現(xiàn)方式都能自由選擇,它的可玩性已經(jīng)非常不錯了。

文言陰符:官方教程
作為官方的文言教程,勢必需要懂文言文才能看懂,不然就顯示不出它的「優(yōu)越性」。在之前的文言編程示例或解釋中,作者都是通過英文或?qū)嵗齺碚故荆枋稣Z句都比較通俗易懂。
然而作為一本經(jīng)典的官方教程,不用文言文寫實在是太浪費了,因此也就有了《文言陰符》,它的風格是這樣的:

上圖是《文言陰符》項目的開篇描述,它以文言文的方式「生動地」描述了開發(fā)者與編程語言之間的關系。文言文加上繁體字,果然是天生一對,如果再加上一些通假字,說不定我們就回到了曾經(jīng)的語文課堂。
《文言陰符》共有十三篇教程,從字面上大概也能了解這本書的主題,例如明義篇主要闡述什么是文言編程,變數(shù)篇主要介紹變量這個概念與用法。

總體來說,該書籍從基本控制語法、數(shù)據(jù)結構、函數(shù)與第三方庫這幾個角度展示了文言編程的主要內(nèi)容,然后還要加上 Error 處理、制圖和高級函數(shù)等進階內(nèi)容。如果讀者們能把這些官方教程看一遍,估計你的文言文水平已經(jīng)超越了大多數(shù)人。
這個教程確實很難,主要體現(xiàn)在文言文功底。相信很多讀者對字典(Dict)這個數(shù)據(jù)類型十分了解了,它以 Key -> Value 的方式組織所有數(shù)據(jù)。然而在格物第十的開篇中,作者將字典這種數(shù)據(jù)格式解釋為格物,「物」的的每一個元素都有一個「名」,或者稱之為 Key,每一個「名」對應的屬性值就是 Value。

如上類似于定義了名為「白馬」的字典,字典里面的 Key 為白馬的屬性,它對應有一個屬性值。夫「白馬」之「「名」」,即調(diào)用字典「名」對應的值。
當然,我們也能從類與屬性的角度去思考,「白馬」是「物」的實例化,實例化的過程中需要為物的各種屬性賦值,并且可以在實例化后繼續(xù)調(diào)用它們。

該教程還支持在線閱讀,從右向左滑動的那種,這感覺有點上頭。
這種風格的教程,儼然需要真材實料的文言知識。
文淵閣:連軟件包都有?
一個編程語言,第三方軟件包的數(shù)量就反映了社區(qū)的活躍度。想象一下,如果有 NumPy 或 PyTorch 這樣的軟件包,那么說不定就能用文言文寫一個神經(jīng)網(wǎng)絡出來,如下 Lotayou 就用文言文寫出了一個神經(jīng)網(wǎng)絡,完整代碼可見項目的 Issue。

雖然,文言編程目前并沒有「火炬心法」這個第三方包,但也不能阻止眾多 DL 煉丹師的激情,Lotayou 寫的「文言神經(jīng)網(wǎng)絡」盡管編譯不了,但邏輯和語法都非常完整。
目前「文淵閣」這個第三方軟件包管理器一共包含以下擴展包:

正如 Pyhton 有 pip,js 有 npm,文言編程語言也有包管理——文淵閣。盡管目前第三方庫并不是太多,但一個合理的包管理器還是需要的,這樣才是一個完整的編程語言。
文淵閣可以直接通過 NPM 安裝,使用的時候,代碼類似 pip 或 npm,只要帶有「wyg」、「i」(install)和包名(如「子曰」)即可。
- wyg i ziyue
 - wyg i 子曰
 
上面兩種都是可行的,運行后包會被下載到藏書樓/子曰這一路徑下,藏書樓類似于 js 的 node_modules。
然后就是導入包了,就像 Python 中的 import 一樣,文言編程的導入格式如下所示:
- 吾嘗觀「「子曰」」之書。方悟「子曰」之義。
 - 子曰「「巧言令色,鮮矣仁!」」。
 
此外,你還可以發(fā)布自己的文言編程語言包,有了這種開源模式,這門語言就真正像是獨立的編程語言了。
很難想象,經(jīng)過兩三個月后該項目就有了這么大的變化,也成為了一萬五收藏量的大項目。將文言文這種傳統(tǒng)文化,與編程語言這樣的當代工具相結合,也許是非常不錯的嘗試。















 
 
 









 
 
 
 