你以為文言編程只是鬧著玩?三個月后,人家IDE、教程、包管理器都有了
用文言文寫的官方編程教程《文言陰符》,類似 pip 那樣的包管理工具「文淵閣」,還有文言編程開源 IDE「文言齋」,文言編程語言已經這么成熟了?
機器之心曾介紹過 CMU 計算機專業(yè)大四學生 Lingdong Huang 的文言編程項目,因為完全采用文言文的方式編程,該項目受到很多開發(fā)者的關注,在 GitHub 上開源 4 天就獲得兩千星,目前更是有 15K 的 Star 量。
大家都說 Star 量是推動項目更新的第一生產力。這不,經過三個月的時間,這個項目就已經發(fā)展成了一門完整的「編程語言」。它有文檔、有 IDE、有第三方庫、有官方教程、有代碼高亮方案等等,所以還要啥 Python,文科生「玩轉」編程的首選語言就是它。
因為目前文言編程已經有了挺多更新,本文后面主要介紹 IDE、官方教程和第三方庫,看它如何一步步升華到合格的編程語言。
文言齋:開源 IDE 來了
之前文言編程不是沒有 IDE,我們可以在線使用,并編譯。但當時 IDE 并沒有開源,它的高亮也有點「神奇」,在輸入與編輯過程中了并不能高亮,只有編譯后才能修改語句的顏色。而且有些中文會被認為是關鍵詞,并不能直接使用,例如機器之心的「之」,如下是我們 2019 年年會的推文,它采用的就是當時的在線 IDE。
運行后會輸出「今日無文,請閱「機器之心 Pro」」。
當時在線 IDE 似乎還不會報錯,編譯出錯只有一個反應「輸出為空」,而現(xiàn)在,這個新開源的 IDE,它已經會在線高亮、返回編譯誤差了。
現(xiàn)在的 IDE,用著已經算比較舒服了,我們可以部署或嵌入到其它地方,甚至可以通過 API 直接調用。每次調用,在 URL 中傳入標題、代碼以及其它各種缺省配置就行。
在線 IDE 地址:https://ide.wy-lang.org/
如下是當前 IDE 整體展示,其最左邊導航欄主要分為用戶代碼腳本、示例腳本、第三方庫列表三部分。值得一提的是,相比當時十來個示例腳本,現(xiàn)在的官方腳本已經有近 50 個,連「水墨畫」的腳本都有。
此外,文言代碼除了編譯為 JS 代碼,IDE 上還可以選擇編譯為 Python 或 Ruby 代碼。只不過當前的在線 IDE 并不支持以 Python 或 Ruby 語言作為后端執(zhí)行文言代碼。
整個 IDE 的主題、編譯方式、展現(xiàn)方式都能自由選擇,它的可玩性已經非常不錯了。
文言陰符:官方教程
作為官方的文言教程,勢必需要懂文言文才能看懂,不然就顯示不出它的「優(yōu)越性」。在之前的文言編程示例或解釋中,作者都是通過英文或實例來展示,描述語句都比較通俗易懂。
然而作為一本經典的官方教程,不用文言文寫實在是太浪費了,因此也就有了《文言陰符》,它的風格是這樣的:
上圖是《文言陰符》項目的開篇描述,它以文言文的方式「生動地」描述了開發(fā)者與編程語言之間的關系。文言文加上繁體字,果然是天生一對,如果再加上一些通假字,說不定我們就回到了曾經的語文課堂。
《文言陰符》共有十三篇教程,從字面上大概也能了解這本書的主題,例如明義篇主要闡述什么是文言編程,變數(shù)篇主要介紹變量這個概念與用法。
總體來說,該書籍從基本控制語法、數(shù)據(jù)結構、函數(shù)與第三方庫這幾個角度展示了文言編程的主要內容,然后還要加上 Error 處理、制圖和高級函數(shù)等進階內容。如果讀者們能把這些官方教程看一遍,估計你的文言文水平已經超越了大多數(shù)人。
這個教程確實很難,主要體現(xiàn)在文言文功底。相信很多讀者對字典(Dict)這個數(shù)據(jù)類型十分了解了,它以 Key -> Value 的方式組織所有數(shù)據(jù)。然而在格物第十的開篇中,作者將字典這種數(shù)據(jù)格式解釋為格物,「物」的的每一個元素都有一個「名」,或者稱之為 Key,每一個「名」對應的屬性值就是 Value。
如上類似于定義了名為「白馬」的字典,字典里面的 Key 為白馬的屬性,它對應有一個屬性值。夫「白馬」之「「名」」,即調用字典「名」對應的值。
當然,我們也能從類與屬性的角度去思考,「白馬」是「物」的實例化,實例化的過程中需要為物的各種屬性賦值,并且可以在實例化后繼續(xù)調用它們。
該教程還支持在線閱讀,從右向左滑動的那種,這感覺有點上頭。
這種風格的教程,儼然需要真材實料的文言知識。
文淵閣:連軟件包都有?
一個編程語言,第三方軟件包的數(shù)量就反映了社區(qū)的活躍度。想象一下,如果有 NumPy 或 PyTorch 這樣的軟件包,那么說不定就能用文言文寫一個神經網(wǎng)絡出來,如下 Lotayou 就用文言文寫出了一個神經網(wǎng)絡,完整代碼可見項目的 Issue。
雖然,文言編程目前并沒有「火炬心法」這個第三方包,但也不能阻止眾多 DL 煉丹師的激情,Lotayou 寫的「文言神經網(wǎng)絡」盡管編譯不了,但邏輯和語法都非常完整。
目前「文淵閣」這個第三方軟件包管理器一共包含以下擴展包:
正如 Pyhton 有 pip,js 有 npm,文言編程語言也有包管理——文淵閣。盡管目前第三方庫并不是太多,但一個合理的包管理器還是需要的,這樣才是一個完整的編程語言。
文淵閣可以直接通過 NPM 安裝,使用的時候,代碼類似 pip 或 npm,只要帶有「wyg」、「i」(install)和包名(如「子曰」)即可。
- wyg i ziyue
- wyg i 子曰
上面兩種都是可行的,運行后包會被下載到藏書樓/子曰這一路徑下,藏書樓類似于 js 的 node_modules。
然后就是導入包了,就像 Python 中的 import 一樣,文言編程的導入格式如下所示:
- 吾嘗觀「「子曰」」之書。方悟「子曰」之義。
- 子曰「「巧言令色,鮮矣仁!」」。
此外,你還可以發(fā)布自己的文言編程語言包,有了這種開源模式,這門語言就真正像是獨立的編程語言了。
很難想象,經過兩三個月后該項目就有了這么大的變化,也成為了一萬五收藏量的大項目。將文言文這種傳統(tǒng)文化,與編程語言這樣的當代工具相結合,也許是非常不錯的嘗試。