大学生发明文言文编程语言!李白杜甫棺材板压不住啦!
公眾號:AI科技大本營
【導(dǎo)讀】近日,GitHub 上一個(gè)叫做文言文(wenyan)的編程語言項(xiàng)目火了,就在本文成文期間,GitHub 上的 Star 數(shù)已經(jīng)從 2200 漲到 2800,并還有繼續(xù)上漲的趨勢。只需要在在線編輯器上,或下載一個(gè)編譯器,就可以用文言文進(jìn)行編程。讓人驚訝的是,這個(gè)涉及思路清奇的項(xiàng)目竟然出自卡內(nèi)基梅隆大學(xué)的一名大四學(xué)生之手,不禁讓人感嘆后生可畏。
文言文(wenyan)是一種深?yuàn)W的編程語言,遵循中國古典文學(xué)的語法和文風(fēng)。據(jù)介紹,這種編程語言文字僅包含繁體中文字符和“''引號,因此古代中國人絕對看得懂。是不是覺得很新奇?那不妨動(dòng)動(dòng)你的小手嘗試一下吧,可以在在線編輯器上試用,也可以下載編譯器或查看源代碼。
在線編輯器:http://wenyan-lang.lingdong.works/ide.html
下載編譯器:https://github.com/LingDong-/wenyan-lang#installation
開源代碼:https://github.com/LingDong-/wenyan-lang
這個(gè)項(xiàng)目受到了大家很多好評,有人說項(xiàng)目的設(shè)計(jì)思路奇特,有人表示在學(xué)編程的同時(shí)還順帶學(xué)習(xí)了文言文,一箭雙雕。
那么,wenyan 究竟是怎么玩的?我們來跟著 GitHub 學(xué)習(xí)一下。
語法
正如如名,文言文(wenyan)遵循古文言文的語法:
編輯
wenyan 目前可編譯為 JavaScript 或 Python,將來可能會支持更多語言(比如 C)。上面的“ Hello World”示例(或任何編輯)將轉(zhuǎn)換為:
var n = 3; for (var i = 0; i < n; i++) {console.log("問天地好在"); }輸出結(jié)果:
問天地好在 問天地好在 問天地好在標(biāo)點(diǎn)和換行符是完全可選的(就像古文言文一樣),因此上面的代碼等效于:
吾有一數(shù)曰三名之曰「甲」為是「甲」遍吾有一言曰「「問天地好在」」書之云云上面的代碼是可編輯的,你可以自定義問候語并點(diǎn)擊??!另一個(gè)稍微復(fù)雜一點(diǎn)的示例,使用埃及篩查找素?cái)?shù):注:埃拉托斯特尼篩法,簡稱埃氏篩或愛氏篩,是一種由希臘數(shù)學(xué)家埃拉托斯特尼所提出的一種簡單檢定素?cái)?shù)的算法。要得到自然數(shù)n以內(nèi)的全部素?cái)?shù),必須把不大于根號n的所有素?cái)?shù)的倍數(shù)剔除,剩下的就是素?cái)?shù)。來源 | 百度百科
你可以在在線 IDE 上找到更多示例,例如通用圖靈機(jī)、曼德勃羅分形圖、漢諾塔等。
特征
- NLP遵循古文言文語法
- 編譯為JavaScript或Python
- 圖靈完備(https://github.com/LingDong-/wenyan-lang/blob/master/examples/turing.wy 在可計(jì)算性理論里,如果一系列操作數(shù)據(jù)的規(guī)則(如指令集、編程語言、細(xì)胞自動(dòng)機(jī))可以用來模擬單帶圖靈機(jī),那么它是圖靈完備的。)
- 在線IDE http://wenyan-lang.lingdong.works/ide.html
- 入門示例 https://github.com/LingDong-/wenyan-lang/tree/master/examples
安裝
編譯器
克隆存儲庫(或下載 ./build/wenyan.js 并設(shè)置其可執(zhí)行位 chmod +x wenyan.js)。然后運(yùn)行 ./build/wenyan.js,把你的 wenyan 源代碼編譯為目標(biāo)語言。調(diào)用不帶參數(shù)的編譯器將顯示幫助消息,如下所示:
Usage: wenyan [options] [input files]Options: --eval -e <string> : Give a string instead of a file (default: `') --exec -x <boolean> : Execute ouput (default: `false') --inspect -i <boolean> : Interactive REPL (default: `false') --lang -l <string> : Language: js/py (default: `js') --log <string> : Log file (default: `/dev/null') --output -o <string> : Output file (default: `/dev/stdout') --roman -r <boolean> : Romanize identifiers (default: `true')首先嘗試構(gòu)建包含的示例,例如:
./build/wenyan.js examples/helloworld.wy -o helloworld.js構(gòu)建平臺特定的二進(jìn)制文件
- 克隆倉庫
- npm install
- npm run make_cmdline
macOS、Windows和Linux二進(jìn)制文件將位于./build文件夾中。
語法備忘單
該項(xiàng)目團(tuán)隊(duì)正在加緊構(gòu)建與上下文無關(guān)的語法描述。同時(shí),你還可以查看以下備忘單或src/parser.js 了解該項(xiàng)目語法。
變量
管理
數(shù)學(xué)
容器
數(shù)組是1索引的。
特征
渲染器
src / render.js 可以將 wenyan 程序渲染為有歷史感的印刷書籍頁面圖像。它還可以將生成的SVG 文件解析回原始程序。下面是用 wenyan 編寫的通用圖靈機(jī)的渲染圖:
出自CMU大四學(xué)生之手
值得注意的是,這個(gè)思路清奇的設(shè)計(jì)竟然出自一名卡內(nèi)基梅隆大學(xué)的大四學(xué)生 Ling Dong Huang。
在作者簡介中,Ling Dong Huang表示自己將于 2020 年獲得計(jì)算機(jī)科學(xué)學(xué)位,此前,他曾在迪士尼研究院、 Antimodular 研究院和《紐約時(shí)報(bào)》實(shí)習(xí),自己也做了項(xiàng)目網(wǎng)站 https://lingdong.works/。目前已經(jīng)有將近 30 個(gè)項(xiàng)目。項(xiàng)目主題豐富多彩,比如用 emoji 做成的小游戲,使用用戶提交的涂鴉做成的計(jì)算機(jī)動(dòng)畫,以及和本文一樣對中國下手,把中國表意文字和部首做成可視化動(dòng)畫,等等,并給出了項(xiàng)目的源代碼。
此外,他的項(xiàng)目還包括:
- 隱士——互動(dòng)式程序生成景觀(CMU 2015 年秋季 CS 15-112 學(xué)期項(xiàng)目競賽優(yōu)勝者)
https://github.com/LingDong-/Hermit - 普通人臉模擬器——本地2人人臉模擬。(觀看次數(shù) 180 + K,在 http://itch.io 上下載 60 + K)
https://lingdonh.itch.io/normal-human-face-simulator - {山,水} **——程序無限生成的中國山水畫。(2018 年 5 月在卡耐基梅隆大學(xué)展出)
https://github.com/LingDong-/shan-shui-inf - 錯(cuò)山記(Legend of Wrong Mountain)——一部完全由機(jī)器使用程序生成和機(jī)器學(xué)習(xí)技術(shù)編寫、創(chuàng)作和表演的中國戲曲。(論文已被 2 0 1 8 NIPS workshop 接收)
https://www.youtube.com/watch? v = QPdb28h4qjc我的在線投資組合中的更多項(xiàng)目(https://lingdong.works)
不得不說,作者的腦洞不小,不少項(xiàng)目的創(chuàng)意很是新奇。
這個(gè)項(xiàng)目你覺得怎么樣?如果你發(fā)現(xiàn)了更多好玩有趣的項(xiàng)目,歡迎留言和我們分享,AI科技大本營將進(jìn)行追蹤報(bào)道,讓更多人了解項(xiàng)目細(xì)節(jié)~
總結(jié)
以上是生活随笔為你收集整理的大学生发明文言文编程语言!李白杜甫棺材板压不住啦!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: $.ajax 同步一不,ajax 同步不
- 下一篇: 天刀服务器未响应,《天涯明月刀手游》画面