您当前的位置:IT头条网要闻正文

尊下可知白话编程之精妙CMU本科生开源白话文编程言语数天2K星

放大字体  缩小字体 2019-12-18 23:42:57  阅读:3123+ 作者:责任编辑NO。谢兰花0258

机器之心报导

参加:思、一鸣

「昔者苍颉作书,而天雨粟,鬼夜哭」,汉字的呈现,诞生了国际上一个巨大的文明。而编程言语的呈现,让人类和核算机发生了真实的联络,推动了现代文明的开展。

那么,将古代汉语和编程言语结合又会发生怎样的火花?最近,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」是怎样的。假如读者们文言文比较溜,或许了解一点程序思想,那么能够了解,下面一段文言文代码便是输出三遍「问六合好在」,也便是「HelloWord」的文言文版。

吾有一數。曰三。名之曰「甲」。

為是「甲」遍。

吾有一言。曰「「問六合好在。」」。書之。

如此。

详细而言,先界说一个数「3」,并命名为「甲」,现在循环「甲」次,每次在屏幕上打印出「問六合好在。」。作者会将其翻译成对应的 Javascript 代码,然后协助咱们了解。

var n = 3;

for (var i = 0; i

console.log("問六合好在");

}

当然,依照咱们的习气,改写成 Python 代码也是没问题的:

a = 3

for 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 guo

print(fei_seq(7))

当然,Python 作为一种极端精简的言语,真实用它来写斐波那契数列必定代码量要少许多。不过,凭借这段翻译,了解文言文编程仍是要简略许多的。假如读者想要试一试,能够仿制这个 GitHub 项目,并在本地编译,也能够直接运用在线 IDE 编译你的代码。

下面,作为一种「新言语」,咱们当然要了解它的奇特语法,不论是界说变量、函数,仍是生成数列,文言文都有对应的语法。

语法规矩

考虑到文言文和其他编程言语的转化有必定的了解难度,作者供给了一些语法转化规矩表,供参阅。

变量命名

条件/循环

数学核算

数组(列表)

这儿从「1」开端计数。

函数

让你的代码更有逼格

看厌了黑底的代码?项目还供给了一个炫酷的「古文代码生成器」,咱们咱们能够把自己的文言文代码转化成古书中从右到左,从上到下,没有标点的古文。是不是更有 B 格了?这个生成器还有 SVG 文件,能够将代码再提取出来,从头运转。

以下为项目作者测验的「图灵机」代码:

机器之心将于 12 月 21 日举行 NeurIPS 2019 上海 MeetUp,包含了多篇论文陈述与星际争霸游戏 AI Demo,欢迎感爱好的读者点击阅览原文报名参加。

点击阅览原文报名参加

为你推荐

  • 进博会对话高通钱堃,混合AI是未来,5G-A发挥重要作用

    最近,高通公司全球高级副总裁钱堃在第七届中国国际进口博览会期间接受媒体专访时介…

    数码
  • 从手机到汽车 高通孟樸进博会解读5G+AI推动朋友圈扩展

    11月5日至10日,第七届中国国际进口博览会在上海举办,高通公司中国区董事长孟樸在进…

    数码
  • 小生意,大爆发|八大行业双11策略划重点

    双11大促已迈入正式期,各行业最关注的就是如何差异化抢量,本期通过对美妆、日化、3…

    数码
  • 2024爱企查毕业季校园行:构建诚信就业市场,为成电、广大学子保驾护航

    5月28日至31日,“2024爱企查毕业季校园行活动”先后走进电子科技大学、广州大学。…

    数码
  • 毕业不慌,查厉来帮|爱企查携手西电学子深度体验品牌魅力

      2024爱企查毕业季校园行火热进行中,5月27日至28日,爱企查走进西安电子科技大学…

    数码
  • “如果发现本网站发布的资讯影响到您的版权,可以联系本站!同时欢迎来本站投稿!