日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

文言文亦能编程,该项目在GitHub摘得5500星!

發(fā)布時(shí)間:2023/12/20 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文言文亦能编程,该项目在GitHub摘得5500星! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

「昔者蒼頡作書,而天雨粟,鬼夜哭」,漢字的出現(xiàn),誕生了世界上一個(gè)偉大的文明。而編程語言的出現(xiàn),讓人類和計(jì)算機(jī)產(chǎn)生了真正的聯(lián)系,推動(dòng)了現(xiàn)代文明的發(fā)展。

那么,將古代漢語和編程語言結(jié)合又會(huì)產(chǎn)生怎樣的火花?最近,GitHub 上出現(xiàn)了一個(gè)文言文做代碼的項(xiàng)目,幾乎是世界上第一門文言文編程語言(當(dāng)然,底層還是轉(zhuǎn)換成 Python 或 JavaScript 運(yùn)行)。

文言文編程語言橫空出世

如果中文是編程語言中使用的主要語言,我們中國人學(xué)習(xí)編程是否會(huì)更簡單?

這是知乎上討論非常火熱的話題。很多接觸過編程的人都知道「易語言」,這是一種使用中文代替編程語言中的英文的編程語言,同樣可以實(shí)現(xiàn)程序功能。近日,一位卡內(nèi)基梅隆大學(xué)(CMU)的大四學(xué)生開發(fā)了基于文言文的編程語言,高中語文三大怕的文言文終于找上程序員了。

這一項(xiàng)目并不是簡單的將程序中的英文字符換成了中文,而是利用 NLP 的一些技術(shù),將文言文程序語法轉(zhuǎn)換到 JavaScript 或 Python 運(yùn)行,有一定的技術(shù)難度。截至發(fā)文,項(xiàng)目已經(jīng)獲贊 5K+,還得到了很多人的微博轉(zhuǎn)發(fā)。

?

眾多網(wǎng)友紛紛對這一項(xiàng)目進(jìn)行了測試,項(xiàng)目作者的腦洞、文采和創(chuàng)意著實(shí)令人驚訝。

如果讀者想快速試一試,你也可以玩一玩在線 IDE,上面有很多預(yù)定義的函數(shù)。即使在手機(jī)上,我們也能編輯并運(yùn)行「文言文代碼」。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? (文末有傳送地址)

?

文言文怎么編程?

?

Huang Lingdong同學(xué)應(yīng)該是讀過《易經(jīng)》,畢竟易經(jīng)是最早論述二進(jìn)制的古書。他用易經(jīng)的陰和陽代表布爾變量中的0和1。

“吾有”系列則被用來做定義:

吾有一數(shù)是定義int變量

吾有一爻是定義布爾變量

吾有一言是定義字符串

吾有一術(shù)是定義函數(shù)

吾有一列是定義數(shù)組

……

一般的編程里,循環(huán)判斷有if、while、for,文言文編程在這件事上更是變化無窮。下面就是一段文言文書寫的判斷語句:

若三弗大於五者。乃得「「想當(dāng)然耳」」。若非。乃得「「怪哉」」也。

翻譯過來就是:

if(3<=5){return "of course"} else{return "no way"}

也許你會(huì)覺得if…else…語句用文言文太啰嗦,但是常用的for循環(huán),用文言文表達(dá)卻更為簡潔。

為是百遍。?? 云云。

它的意思是:

for (var i = 0; i < 100; i++){ ... }

如果需要判斷某個(gè)變量human是否在world中,我們一般用for (var human of world),初學(xué)者看到for的這種用法可能會(huì)很困惑,而文言文的表示更接近普通人的理解。

凡「天地」中之「人」。?? 云云。

古有《易經(jīng)》,今有金庸小說,在展示定義函數(shù)的時(shí)候,Huang同學(xué)又皮了一下:

吾有一術(shù)。名之曰「六脈神劍」。欲行是術(shù)。必先得六數(shù)。曰「甲」。曰「乙」。曰「丙」。曰「丁」。曰「戊」。曰「己」乃行是術(shù)曰。??是謂「六脈神劍」之術(shù)也。

這里Huang同學(xué)將函數(shù)名定義為“六脈神劍”,這個(gè)函數(shù)總共有6個(gè)輸入。

funcion f(a,b,c,d,e,f){…}

看厭了黑底的代碼?項(xiàng)目還提供了一個(gè)炫酷的「古文代碼生成器」,我們可以把自己的文言文代碼轉(zhuǎn)換成古書中從右到左,從上到下,沒有標(biāo)點(diǎn)的古文。是不是更有 B 格了?這個(gè)生成器還有 SVG 文件,可以將代碼再提取出來,重新運(yùn)行。

以下為項(xiàng)目作者嘗試的「圖靈機(jī)」代碼:

?

語法規(guī)則

考慮到文言文和其他編程語言的轉(zhuǎn)換有一定的理解難度,作者提供了一些語法轉(zhuǎn)換規(guī)則表,供參考。

變量命名

條件/循環(huán)

?

數(shù)學(xué)計(jì)算

?

數(shù)組(列表)

這里從「1」開始計(jì)數(shù)。

?

函數(shù)

?

他是“何方神圣”?

值得注意的是,這個(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)目的源代碼。

他還做了一些很有趣的東西,比比如微信終端版,格律詩編輯程序,真實(shí)一個(gè)傳統(tǒng)文學(xué)的愛好者啊!

如果大家想試玩下,可以直接克隆作者的項(xiàng)目,然后按照語法去調(diào)試一下即可,macOS、Wondows、Linux的二進(jìn)制文件將位于./build文件夾中。

Usage: wenyan [options] [input files]Options: --eval -e <string> : Give a string instead of a file (default: `') --exec -x <boolean> : Execute output (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') ./build/wenyan.js examples/helloworld.wy -o helloworld.js

作者還有一些其它好玩的項(xiàng)目,例如可以用程序無限生成的中國山水畫,錯(cuò)山記(中文翻譯哈),格律詩編輯程序,隱士等等,GitHub上都能找到,大家不妨去看一下

  • GitHub鏈接:https://github.com/LingDong-/wenyan-lang

傳送門:

項(xiàng)目代碼:

https://github.com/LingDong-/wenyan-lang

項(xiàng)目主頁:

http://wenyan-lang.lingdong.works/

線上IDE試玩:

http://wenyan-lang.lingdong.works/ide.html

個(gè)人主頁:

https://lingdong.works/

趕緊去看看小哥的神創(chuàng)造!

安裝與使用

文言文編程只需將repo下載到本地,而且本地已經(jīng)安裝Node,就能立即使用。現(xiàn)在它支持將wenyan lang轉(zhuǎn)換成JavaScript和Python:

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

在這段命令中,如果不指定語言,程序?qū)⒆詣?dòng)轉(zhuǎn)化為JavaScript,若想轉(zhuǎn)化成Python,請加入?yún)?shù)“—lang py”或是“-l py”。

用戶也可以自行編譯二進(jìn)制文件。如果你只想嘗嘗鮮,在線IDE也是個(gè)不錯(cuò)的選擇。

小編先去玩了!

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?程序員生活志

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 關(guān)注我,不錯(cuò)過任何一件程序員新鮮事兒!

總結(jié)

以上是生活随笔為你收集整理的文言文亦能编程,该项目在GitHub摘得5500星!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。