你以為文言編程只是鬧著玩?三個月後,IDE、教程、包管理器都有了

機器之心報道

參與:思、Jamin

用文言文寫的官方編程教程《文言陰符》,類似 pip 那樣的包管理工具「文淵閣」,還有文言編程開源 IDE「文言齋」,文言編程語言已經這麼成熟了?


機器之心曾介紹過 CMU 計算機專業大四學生 Lingdong Huang 的文言編程項目,因為完全採用文言文的方式編程,該項目受到很多開發者的關注,在 GitHub 上開源 4 天就獲得兩千星,目前更是有 15K 的 Star 量。


大家都說 Star 量是推動項目更新的第一生產力。這不,經過三個月的時間,這個項目就已經發展成了一門完整的「編程語言」。它有文檔、有 IDE、有第三方庫、有官方教程、有代碼高亮方案等等,所以還要啥 Python,文科生「玩轉」編程的首選語言就是它。


你以為文言編程只是鬧著玩?三個月後,IDE、教程、包管理器都有了


因為目前文言編程已經有了挺多更新,本文後面主要介紹 IDE、官方教程和第三方庫,看它如何一步步昇華到合格的編程語言。


文言齋:開源 IDE 來了


之前文言編程不是沒有 IDE,我們可以在線使用,並編譯。但當時 IDE 並沒有開源,它的高亮也有點「神奇」,在輸入與編輯過程中了並不能高亮,只有編譯後才能修改語句的顏色。而且有些中文會被認為是關鍵詞,並不能直接使用,例如機器之心的「之」,如下是我們 2019 年年會的推文,它採用的就是當時的在線 IDE。


你以為文言編程只是鬧著玩?三個月後,IDE、教程、包管理器都有了

運行後會輸出「今日無文,請閱「機器之心 Pro」」。


當時在線 IDE 似乎還不會報錯,編譯出錯只有一個反應「輸出為空」,而現在,這個新開源的 IDE,它已經會在線高亮、返回編譯誤差了。


你以為文言編程只是鬧著玩?三個月後,IDE、教程、包管理器都有了


現在的 IDE,用著已經算比較舒服了,我們可以部署或嵌入到其它地方,甚至可以通過 API 直接調用。每次調用,在 URL 中傳入標題、代碼以及其它各種缺省配置就行。


在線 IDE 地址:https://ide.wy-lang.org/


如下是當前 IDE 整體展示,其最左邊導航欄主要分為用戶代碼腳本、示例腳本、第三方庫列表三部分。值得一提的是,相比當時十來個示例腳本,現在的官方腳本已經有近 50 個,連「水墨畫」的腳本都有。


你以為文言編程只是鬧著玩?三個月後,IDE、教程、包管理器都有了


此外,文言代碼除了編譯為 JS 代碼,IDE 上還可以選擇編譯為 Python 或 Ruby 代碼。只不過當前的在線 IDE 並不支持以 Python 或 Ruby 語言作為後端執行文言代碼。


整個 IDE 的主題、編譯方式、展現方式都能自由選擇,它的可玩性已經非常不錯了。


你以為文言編程只是鬧著玩?三個月後,IDE、教程、包管理器都有了


文言陰符:官方教程


作為官方的文言教程,勢必需要懂文言文才能看懂,不然就顯示不出它的「優越性」。在之前的文言編程示例或解釋中,作者都是通過英文或實例來展示,描述語句都比較通俗易懂。


然而作為一本經典的官方教程,不用文言文寫實在是太浪費了,因此也就有了《文言陰符》,它的風格是這樣的:


你以為文言編程只是鬧著玩?三個月後,IDE、教程、包管理器都有了


上圖是《文言陰符》項目的開篇描述,它以文言文的方式「生動地」描述了開發者與編程語言之間的關係。文言文加上繁體字,果然是天生一對,如果再加上一些通假字,說不定我們就回到了曾經的語文課堂。


《文言陰符》共有十三篇教程,從字面上大概也能瞭解這本書的主題,例如明義篇主要闡述什麼是文言編程,變數篇主要介紹變量這個概念與用法。


你以為文言編程只是鬧著玩?三個月後,IDE、教程、包管理器都有了


總體來說,該書籍從基本控制語法、數據結構、函數與第三方庫這幾個角度展示了文言編程的主要內容,然後還要加上 Error 處理、製圖和高級函數等進階內容。如果讀者們能把這些官方教程看一遍,估計你的文言文水平已經超越了大多數人。


這個教程確實很難,主要體現在文言文功底。相信很多讀者對字典(Dict)這個數據類型十分了解了,它以 Key -> Value 的方式組織所有數據。然而在格物第十的開篇中,作者將字典這種數據格式解釋為格物,「物」的的每一個元素都有一個「名」,或者稱之為 Key,每一個「名」對應的屬性值就是 Value。


你以為文言編程只是鬧著玩?三個月後,IDE、教程、包管理器都有了


如上類似於定義了名為「白馬」的字典,字典裡面的 Key 為白馬的屬性,它對應有一個屬性值。夫「白馬」之「「名」」,即調用字典「名」對應的值。


當然,我們也能從類與屬性的角度去思考,「白馬」是「物」的實例化,實例化的過程中需要為物的各種屬性賦值,並且可以在實例化後繼續調用它們。


你以為文言編程只是鬧著玩?三個月後,IDE、教程、包管理器都有了

該教程還支持在線閱讀,從右向左滑動的那種,這感覺有點上頭。


這種風格的教程,儼然需要真材實料的文言知識。


文淵閣:連軟件包都有?


一個編程語言,第三方軟件包的數量就反映了社區的活躍度。想象一下,如果有 NumPy 或 PyTorch 這樣的軟件包,那麼說不定就能用文言文寫一個神經網絡出來,如下 Lotayou 就用文言文寫出了一個神經網絡,完整代碼可見項目的 Issue。


你以為文言編程只是鬧著玩?三個月後,IDE、教程、包管理器都有了


雖然,文言編程目前並沒有「火炬心法」這個第三方包,但也不能阻止眾多 DL 煉丹師的激情,Lotayou 寫的「文言神經網絡」儘管編譯不了,但邏輯和語法都非常完整。


目前「文淵閣」這個第三方軟件包管理器一共包含以下擴展包:


你以為文言編程只是鬧著玩?三個月後,IDE、教程、包管理器都有了


正如 Pyhton 有 pip,js 有 npm,文言編程語言也有包管理——文淵閣。儘管目前第三方庫並不是太多,但一個合理的包管理器還是需要的,這樣才是一個完整的編程語言。


文淵閣可以直接通過 NPM 安裝,使用的時候,代碼類似 pip 或 npm,只要帶有「wyg」、「i」(install)和包名(如「子曰」)即可。


<code>wyg i ziyue
wyg i 子曰/<code>


上面兩種都是可行的,運行後包會被下載到藏書樓/子曰這一路徑下,藏書樓類似於 js 的 node_modules。


然後就是導入包了,就像 Python 中的 import 一樣,文言編程的導入格式如下所示:


<code>吾嘗觀「「子曰」」之書。方悟「子曰」之義。 


子曰「「巧言令色,鮮矣仁!」」。/<code>


此外,你還可以發佈自己的文言編程語言包,有了這種開源模式,這門語言就真正像是獨立的編程語言了。


很難想象,經過兩三個月後該項目就有了這麼大的變化,也成為了一萬五收藏量的大項目。將文言文這種傳統文化,與編程語言這樣的當代工具相結合,也許是非常不錯的嘗試。


分享到:


相關文章: