大四學生髮明文言文程式語言,設計思路清奇

大四學生髮明文言文程式語言,設計思路清奇

整理 | 夕顏

【導讀】近日,GitHub 上一個叫做文言文(wenyan)的程式語言專案火了,就在本文成文期間,GitHub 上的 Star 數已經從 2200 漲到 2800,並還有繼續上漲的趨勢。只需要在線上編輯器上,或下載一個編譯器,就可以用文言文進行程式設計。讓人驚訝的是,這個涉及思路清奇的專案竟然出自卡內基梅隆大學的一名大四學生之手,不禁讓人感嘆後生可畏。

文言文(wenyan)是一種深奧的程式語言,遵循中國古典文學的語法和文風。據介紹,這種程式語言文字僅包含繁體中文字元和“‘’引號,因此古代中國人絕對看得懂。是不是覺得很新奇?那不妨動動你的小手嘗試一下吧,可以在線上編輯器上試用,也可以下載編譯器或檢視原始碼。

線上編輯器:http://wenyan-lang。lingdong。works/ide。html

下載編譯器:https://github。com/LingDong-/wenyan-lang#installation

開原始碼:https://github。com/LingDong-/wenyan-lang

大四學生髮明文言文程式語言,設計思路清奇

這個專案受到了大家很多好評,有人說專案的設計思路奇特,有人表示在學程式設計的同時還順帶學習了文言文,一箭雙鵰。

那麼,wenyan 究竟是怎麼玩的?我們來跟著 GitHub 學習一下。

語法

正如如名,文言文(wenyan)遵循古文言文的語法:

大四學生髮明文言文程式語言,設計思路清奇

編輯

wenyan 目前可編譯為 JavaScript 或 Python,將來可能會支援更多語言(比如 C)。上面的“ Hello World”示例(或任何編輯)將轉換為:

var n = 3;for (var i = 0; i < n; i++) { console。log(“問天地好在”);}

輸出結果:

問天地好在問天地好在問天地好在

標點和換行符是完全可選的(就像古文言文一樣),因此上面的程式碼等效於:

吾有一數曰三名之曰「甲」為是「甲」遍吾有一言曰「「問天地好在」」書之云云

上面的程式碼是可編輯的,你可以自定義問候語並點選!

另一個稍微複雜一點的示例,使用埃及篩查詢素數:

注:埃拉託斯特尼篩法,簡稱埃氏篩或愛氏篩,是一種由希臘數學家埃拉託斯特尼所提出的一種簡單檢定素數的演算法。要得到自然數n以內的全部素數,必須把不大於根號n的所有素數的倍數剔除,剩下的就是素數。來源 | 百度百科

大四學生髮明文言文程式語言,設計思路清奇

你可以在線上 IDE 上找到更多示例,例如通用圖靈機、曼德勃羅分形圖、漢諾塔等。

特徵

NLP遵循古文言文語法

編譯為JavaScript或Python

圖靈完備(https://github。com/LingDong-/wenyan-lang/blob/master/examples/turing。wy 在可計算性理論裡,如果一系列操作資料的規則(如指令集、程式語言、細胞自動機)可以用來模擬單帶圖靈機,那麼它是圖靈完備的。)

線上IDE http://wenyan-lang。lingdong。works/ide。html

入門示例 https://github。com/LingDong-/wenyan-lang/tree/master/examples

安裝

編譯器

克隆儲存庫(或下載 。/build/wenyan。js 並設定其可執行位 chmod +x wenyan。js)。然後執行 。/build/wenyan。js,把你的 wenyan 原始碼編譯為目標語言。呼叫不帶引數的編譯器將顯示幫助訊息,如下所示:

Usage: wenyan [options] [input files]

Options:——eval -e : Give a string instead of a file (default: `‘)——exec -x : Execute ouput (default: `false’)——inspect -i : Interactive REPL (default: `false‘)——lang -l : Language: js/py (default: `js’)——log : Log file (default: `/dev/‘)——output -o : Output file (default: `/dev/stdout’)——roman -r : Romanize identifiers (default: `true‘)

首先嚐試構建包含的示例,例如:

。/build/wenyan。js examples/helloworld。wy -o helloworld。js

構建平臺特定的二進位制檔案

克隆倉庫

npm install

npm run make_cmdline

macOS、Windows和Linux二進位制檔案將位於。/build資料夾中。

語法備忘單

該專案團隊正在加緊構建與上下文無關的語法描述。同時,你還可以檢視以下備忘單或src/parser。js 瞭解該專案語法。

變數

大四學生髮明文言文程式語言,設計思路清奇

管理

大四學生髮明文言文程式語言,設計思路清奇

數學

大四學生髮明文言文程式語言,設計思路清奇

容器

陣列是1索引的。

大四學生髮明文言文程式語言,設計思路清奇

特徵

大四學生髮明文言文程式語言,設計思路清奇

渲染器

src / render。js 可以將 wenyan 程式渲染為有歷史感的印刷書籍頁面影象。它還可以將生成的SVG 檔案解析回原始程式。下面是用 wenyan 編寫的通用圖靈機的渲染圖:

大四學生髮明文言文程式語言,設計思路清奇

出自CMU大四學生之手

值得注意的是,這個思路清奇的設計竟然出自一名卡內基梅隆大學的大四學生 Ling Dong Huang。

大四學生髮明文言文程式語言,設計思路清奇

在作者簡介中,Ling Dong Huang 表示自己將於 2020 年獲得計算機科學學位,此前,他曾在迪士尼研究院、 Antimodular 研究院和《紐約時報》實習,自己也做了專案網站 https://lingdong。works/。目前已經有將近 30 個專案。專案主題豐富多彩,比如用 emoji 做成的小遊戲,使用使用者提交的塗鴉做成的計算機動畫,以及和本文一樣對中國下手,把中國表意文字和部首做成視覺化動畫,等等,並給出了專案的原始碼。

大四學生髮明文言文程式語言,設計思路清奇

大四學生髮明文言文程式語言,設計思路清奇

大四學生髮明文言文程式語言,設計思路清奇

此外,他的專案還包括:

隱士——互動式程式生成景觀(CMU 2015 年秋季 CS 15-112 學期專案競賽優勝者)

https://github。com/LingDong-/Hermit

普通人臉模擬器——本地2人人臉模擬。(觀看次數 180 + K,在 itch。io 上下載 60 + K)

https://lingdonh。itch。io/normal-human-face-simulator

{山,水} **——程式無限生成的中國山水畫。(2018 年 5 月在卡耐基梅隆大學展出)

https://github。com/LingDong-/shan-shui-inf

錯山記(Legend of Wrong Mountain)——一部完全由機器使用程式生成和機器學習技術編寫、創作和表演的中國戲曲。(論文已被 2 0 1 8 NIPS workshop 接收)

https://www。youtube。com/watch? v = QPdb28h4qjc我的線上投資組合中的更多專案(https://lingdong。works)

不得不說,作者的腦洞不小,不少專案的創意很是新奇。

這個專案你覺得怎麼樣?如果你發現了更多好玩有趣的專案,歡迎留言和我們分享,AI科技大本營將進行追蹤報道,讓更多人瞭解專案細節~