左右可知文言编程之精妙?CMU本科生开源文言文编程,数天2K星

发布时间:2021-11-10 01:00 阅读次数:
本文摘要:机械之心报道到场:思、一鸣「昔者苍颉作书,而天雨粟,鬼夜哭」,汉字的泛起,降生了世界上一个伟大的文明。而编程语言的泛起,让人类和盘算机发生了真正的联系,推动了现代文明的生长。 那么,将古代汉语和编程语言联合又会发生怎样的火花?最近,GitHub 上泛起了一个文言文做代码的项目,险些是世界上第一门文言文编程语言(固然,底层还是转换成 Python 或 JavaScript 运行)。如果中文是编程语言中使用的主要语言,我们中国人学习编程是否会更简朴?

yobo体育官网

机械之心报道到场:思、一鸣「昔者苍颉作书,而天雨粟,鬼夜哭」,汉字的泛起,降生了世界上一个伟大的文明。而编程语言的泛起,让人类和盘算机发生了真正的联系,推动了现代文明的生长。

那么,将古代汉语和编程语言联合又会发生怎样的火花?最近,GitHub 上泛起了一个文言文做代码的项目,险些是世界上第一门文言文编程语言(固然,底层还是转换成 Python 或 JavaScript 运行)。如果中文是编程语言中使用的主要语言,我们中国人学习编程是否会更简朴?这是知乎上讨论很是火热的话题。许多接触过编程的人都知道「易语言」,这是一种使用中文取代编程语言中的英文的编程语言,同样可以实现法式功效。

克日,一位卡内基梅隆大学(CMU)的大四学生开发了基于文言文的编程语言,高中语文三大怕的文言文终于找上法式员了。项目地址:https://github.com/LingDong-/wenyan-lang这一项目并不是简朴的将法式中的英文字符换成了中文,而是使用 NLP 的一些技术,将文言文法式语法转换到 JavaScript 或 Python 运行,有一定的技术难度。项目问世几日即获赞 2.2K,还获得了许多人的微博转发。

作为横跨媒体和 AI 的机械之心也测试了这一项目,项目作者的脑洞、文采和创意着实令人惊讶。如果读者想快速试一试,你也可以玩一玩在线 IDE,上面有许多预界说的函数。

纵然在手机上,我们也能编辑并运行「文言文代码」。在线地址:http://wenyan-lang.lingdong.works/ide.html序言作者在项目开篇使用了一段文言文,先容了建设这个项目的初衷。翻译如下:在尧舜时代,人们使用结绳和数手指来盘算。其时怎么能够预推测,几百代人之后盘算机的巧妙呢!盘算机比鲁班(公输盘)的木鸢越发精巧,比诸葛亮(武侯)的木牛流马更好。

此外,编程语言数量众多,如同《天官书》记载的星宿一般多,又比《山海经》中记载的飞禽走兽还要奇特。Go(鼠)、Rust(蟹)、Ruby(鑽)、Fishshell(鱼)因速度而着名。Python(蛇)、Php(象)、Perl(骆)和 JavaScript(犀)则各有奇特之处。

我这才明白到,为什么鬼会夜哭,天上会下粟雨。(注:传仓颉造字后,鬼神啼哭,天降粟雨)但以往从未有人使用过文言文举行编程。这并不是传承文脉、掩护文心的好方法,所以我才发生了用文言文编程的想法。我现在还太年轻,读过的书也没有破万卷。

如今身处遥远的国家(美国),也良久没有接触中文了。可是我一直对文学很有兴趣,编写的法式有时候也获得人们的一些肯定。正如王希孟和庄子一般,并不因为年轻或者知识的众多无涯而退缩,于是写下了这些话。

(注:王希孟,北宋画家,18岁画成传世名作《千里山河图》)我既没有像李贺那样呕心沥血,也没有像李商隐那样口角流沫(形容念书勤奋)。项目完成后,我将继续以干将铸剑的精神勉励自己,带着越王卧薪尝胆的精神继续向前。我自己虽想效仿《算经十书》的笔法,只是遗憾没有唐宋八大家那样淋漓的文笔。

正如庾信在《哀江南赋》所写:「陆机听了心甘情愿地拍掌;张衡见了将轻视它也是天经地义」(意指如果被人讽刺,也是天经地义,我不会太过介意)。只管这项目只有覆瓮的价值(一点微小的事情),可是另有完善的空间。虽然没有像吕不韦那样有一字千金的资本,可是我对交流的盼望是一样的。

这也正是开源的精神内核,我们以此相互勉励吧。作者是谁?Lingdong Huang 现在是 CMU 盘算机专业大四学生,明年就本科结业了。我们可以看到他曾在迪士尼研究实验室、纽约时报等大厂实习过。而且从小我私家网站中,很显着可以发现他高中就开始做种种小项目,包罗视觉和自然语言的都有。

写得了代码、读得了文言文,文化秘闻还这么强,现在的本科生已经这么厉害了。小我私家网站:https://lingdong.works文言文编程是什么情况用文言文编程是什么样一种体验?是不是既能学习文言文,又能搞定编程逻辑?先容不如演示,我们先看看编程世界里的第一段代码,宽大法式员学习的第一句「HelloWord」是什么样的。

yobo体育官网下载

如果读者们文言文比力溜,或者相识一点法式思维,那么可以相识,下面一段文言文代码就是输出三遍「问天地幸亏」,也就是「HelloWord」的文言文版。吾有一數。曰三。

名之曰「甲」。為是「甲」遍。    吾有一言。

曰「「問天地幸亏。」」。書之。

云云。详细而言,先界说一个数「3」,并命名为「甲」,现在循环「甲」次,每次在屏幕上打印出「問天地幸亏。

」。作者会将其翻译成对应的 Javascript 代码,从而资助我们明白。var n = 3;for (var i = 0; i < n; i++) {    console.log("問天地幸亏");}固然,根据我们的习惯,改写成 Python 代码也是没问题的:a = 3for i in range(a):    print("問天地幸亏")为了更贴近文言文的表达习惯,Lingdong Huang 在项目表现种种标点和换行都是可以去掉的,上面的文言文代码可以等价写为:吾有一數曰三名之曰「甲」為是「甲」遍吾有一言曰「「問天地幸亏」」書之云云突然感受,似乎没了符号的文言文代码更容易懂了?这样看起来似乎很简朴?那你就小瞧了文言文编程的魅力。

好比说法式员入门必修课「斐波那契数列」,每一项都是前两项的和,第一项是 0、第二项是 0+1、第三项是 1+1 等等。如果用文言文来写斐波那契数列,我们需要建设一个函数,函数的输入是斐波那契项数,输出是该项详细的值。如果用文言文来写,画风是这样的:最后一句「施「斐氏列」於七。書之。

」是挪用函数,并输出第 7 个效果。虽然看上去比力贫苦,但我们还是可以细细阅读,例如「吾有一術。名之曰「斐氏列」。」很显着界说了一个函数,函数名是「斐氏列」;「若「因」等於零者。

昔之「果」者。今「因」是矣云云。

」表现如果「因」这个变量即是 0,那么就将「因」这个变量的值赋值到「果」变量。如果阅读上另有难题,那么也可以看看项目作者提供的对应 Javascript 代码。不外我们可以实验把它翻译成 Python 语言,翻译效果如下所示:def fei_seq(yin):    tou = 0    wei = 1    ji = 1    guo = 0    if yin == 0:        guo = yin    if yin == 1:        guo = yin    while True:        if ji >= yin:            break        ans_ = tou +wei        guo = ans_        tou = wei        wei = guo        ans_ = ji + 1        ji = ans_    return guoprint(fei_seq(7))固然,Python 作为一种极其精简的语言,真正用它来写斐波那契数列肯定代码量要少许多。不外,借助这段翻译,明白文言文编程还是要简朴许多的。

如果读者想要试一试,可以复制这个 GitHub 项目,并在当地编译,也可以直接使用在线 IDE 编译你的代码。下面,作为一种「新语言」,我们固然要相识它的神奇语法,岂论是界说变量、函数,还是生成数列,文言文都有对应的语法。语法例则思量到文言文和其他编程语言的转换有一定的明白难度,作者提供了一些语法转换规则表,供参考。变量命名条件/循环数学盘算数组(列表)这里从「1」开始计数。

yobo体育官网

函数让你的代码更有逼格看厌了黑底的代码?项目还提供了一个炫酷的「古文代码生成器」,我们可以把自己的文言文代码转换成古书中从右到左,从上到下,没有标点的古文。是不是更有 B 格了?这个生成器另有 SVG 文件,可以将代码再提取出来,重新运行。以下为项目作者实验的「图灵机」代码:。


本文关键词:左右,可知,yobo体育官网,文言,编程,之,精妙,CMU,本科生,开源

本文来源:yobo体育官网下载-www.cornell.ac.cn

在线客服 联系方式 二维码

电话

0853-329438424

扫一扫,关注我们