最近看到一个有意思的开源项目 wenyan,主要功能就是使用文言文来编写代码。
按项目说明 “Wenyan” 是一种遵循中国古典文学的语法和语调的编程语言。
此外,文言的字符集仅包含繁体汉字和「」引号,确保古代中国人能够阅读。
该编程语言的文件名后缀为:.wy。
按这个说法把这个编程语言穿越到古代应该会出现很多大师,搞不好孔子都能成为编程语言的缔造者。
项目开源地址:https://github.com/wenyan-lang/wenyan
另外这个语言也整了一本入门教程叫《文言陰符》,整本手册都是以文言文写成的,所以入门也是难度超高:
在线手册:https://book.wy-lang.org/
开源地址:https://github.com/wenyan-lang/book
在线文档看起来也是非常的古风,老外来学不得先从论语入门:
再来看下该语言的序:
– 夫唐、虞__之世,結繩而足治,屈指而足算。是時豈料百代之後,計算機械之巧,精於__公輸__之__木鳶,善於__武侯__之__流馬_;程式語言之多,繁若__《天官》之星宿,奇勝《山經》之走獸。鼠、蟹、鑽、魚,或以速稱。蛇、象、駱、犀,各爭文采。方知__鬼之所以夜哭,天之所以雨粟。然以文言編程者 ,似所未有。此誠非文脈之所以傳,文心之所以保。嗟予小子,遂有斯志。然則數寸之烏絲猶覆於頭,萬卷之素書未破於手;一身長羈於遠邦,兩耳久曠于__雅言__。然夫文章者吾之所宿好,程式者偶承時人之謬譽。故__希孟__不慚年少,莊生__不望__無涯。乃作斯言。誠未能嘔瀝__長吉__之__心血__,亦庶幾免於__義山__之__流沫__。既成之後,復學__干將鑄劍__而自飼,越王嚐糞__而當先。自謂偶追《十書》之筆意,但恨少__八家__之淋漓。此__子山__所謂__士衡撫掌而甘心,平子見陋而固宜。然則雖實__覆甕__之質,尚存斧正之望;雖乏__呂相__之金,_易字__之渴蓋同。此亦開源之大義,吾輩之所以勉勵也。一笑。
看完,直接整不会了,我也不研究了,让 AI 翻译下内容如下:
– 在唐尧、虞舜时代,人们用结绳记事就能治理国家,用屈指计算就足够了。当时哪里能预料到百代之后,计算机技术如此巧妙,精密超过鲁班的木鸢,灵活优于诸葛亮的木牛流马;编程语言种类繁多,如《天官书》里的星宿般数不胜数,奇妙胜过《山海经》中的走兽。鼠标、蟹形、钻石、鱼形等各自以速度称雄。蛇形、象形、骆驼形、犀牛形等各争奇斗艳。这时人们才明白鬼为什么会在夜里哭泣,天为什么会降下谷子。然而,用文言文来编程,似乎前所未有。这确实不是文脉传承的方式,也不是文心保持的方法。我这个小子,遂有此志向。然而我的头上还有几寸黑发,手中还未读破万卷书;我一身长期羁留在异国他乡,两耳很久没听到雅言。然而文章是我一直以来的爱好,编程则是偶然得到了时人的错误赞誉。所以像孟子那样不愧于年轻,像庄子那样不羡慕无涯。于是写下这些话。虽然不能完全倾尽李贺的心血,但也希望避免成为李商隐那样的流言蜚语。完成之后,学习干将铸剑而自我品尝,像越王尝粪那样率先体验。自认为偶尔追随《十书》的笔意,只恨少了八大家的淋漓尽致。这就像子山所说的,陆机拍掌而甘心,扬雄见到也觉得适宜。然而,虽然作品粗糙如覆在甕上的质朴,还寄希望于斧正之人;虽然缺乏吕相的金玉,但对文字修改的渴望仍然相同。这也是开源的大义,是我们这一辈人所努力的方向。聊此一笑。
接下来看看怎么输出文言文版的 “Hello, World!”:
与以下 JavaScript 代码等价:
再来看斐波那契的实现:
编程成 JavaScript 代码如下所示:
感兴趣的,可以先使用在线测试工具试用看看:https://ide.wy-lang.org/
也可以使用以下命令安装本地编译器:
npm install -g @wenyan/cli
使用 wenyan 来执行代码文件:
wenyan examples/helloworld.wy
另外 IDE 方面大家也不用担心:
VSCode、Vim、Sublime 都有对应的插件。
VSCode 插件开源地址:https://github.com/antfu/wenyan-lang-vscode
VSCode 插件安装地址:https://marketplace.visualstudio.com/items?itemName=antfu.wenyan-lang