噫吁嚱!文言文亦能编程!此诚年度最骚语言也

栗子 晓查 发自 海边边 
量子位 报道 | 公众号 QbitAI

同学,你可知如何用文言文输出“Hello World”?

请君睁圆双眼注视于此:

 右边一顿输出

吾有一言。曰「「問天地好在。」」。書之。

却为何输出了三遍?

只因有for循环,写作“為是「甲」遍…云云”。甲等于三,便要问三次好。

这骚之过极的文言文编程语言,来自CMU本科生Huang Lingdong。

可编译成Javascript,也可编译成Python,亦有线上编辑器 (IDE) 可直接玩耍。

项目文理两开花,已于GitHub摘得3000星,且围观众人皆有话说。

譬如,妒少年之才华:

譬如,点未来之方向:

中科院计算所研究员刘群老师亦感叹:

当下,我等便前去观膜一番,探索此语言藏有何种天地精华。

文言文编程“黑话”

Huang Lingdong同学应该是读过《易经》,毕竟易经是最早论述二进制的古书。他用易经的代表布尔变量中的0和1。

“吾有”系列则被用来做定义:

吾有一数是定义int变量
吾有一爻是定义布尔变量
吾有一言是定义字符串
吾有一术是定义函数
吾有一列是定义数组
……

一般的编程里,循环判断有if、while、for,文言文编程在这件事上更是变化无穷。下面就是一段文言文书写的判断语句:

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

翻译过来就是:

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

也许你会觉得if…else…语句用文言文太啰嗦,但是常用的for循环,用文言文表达却更为简洁。

為是百遍。⋯⋯ 云云。

它的意思是:

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

如果需要判断某个变量human是否在world中,我们一般用for (var human of world),初学者看到for的这种用法可能会很困惑,而文言文的表示更接近普通人的理解。

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

古有《易经》,今有金庸小说,在展示定义函数的时候,Huang同学又皮了一下:

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

这里Huang同学将函数名定义为“六脉神剑”,这个函数总共有6个输入。

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

还有更多好玩的函数定义:

怎样用文言文编程

看完文言文编程的基本语法后,我们来看看怎么用它来解决一些基本的问题。

比如求100以内的素数,我们会用到一种“埃氏筛”(Sieve of Eratosthenes)算法:

看一下运行结果:

二。三。五。七。一十一。一十三。一十七。一十九。二十三。二十九。三十一。三十七。四十一。四十三。四十七。五十三。五十九。六十一。六十七。七十一。七十三。七十九。八十三。八十九。九十七

你看懂是什么意思了吗?编译器翻译成JavaScript就是:

var AI1SHI4SHAI1 = () => 0;
AI1SHI4SHAI1 = function(JIA3) {var YAN3 = [];for (var _rand4 = 0; _rand4 < JIA3; _rand4++) {YAN3.push(true);};var _ans154 = JIA3 / 2;var JIA3BAN4 = _ans154;var WU4 = 2;while (true) {if (WU4 == JIA3BAN4) {break;};var XU1_ = 2;while (true) {if (XU1_ == JIA3BAN4) {break;};var _ans155 = WU4 * XU1_;var HE2 = _ans155;if (HE2 <= JIA3) {YAN3[HE2 - 1] = false;} else {break;};var _ans156 = 1 + XU1_;XU1_ = _ans156;};var _ans157 = 1 + WU4;WU4 = _ans157;};var ZHU1SU4 = [];var WU4 = 2;while (true) {if (WU4 == YAN3.length) {break;};var _ans158 = YAN3[WU4 - 1];var SU4YE2 = _ans158;if (SU4YE2) {ZHU1SU4.push(WU4);};var _ans159 = 1 + WU4;WU4 = _ans159;};return ZHU1SU4
};
var _ans160 = AI1SHI4SHAI1(100);
console.log(_ans160);

文言文编程不仅能输出简单的结果,连文字图(ASCII Art)都可以用文言文画出来,分形问题中著名的“曼德博集合”,用中文画出来是这样:

用中文画出的曼德博集合

你以为这就是编译结果的最终形态了?错错错!

项目文件还有个脚本src/render.js,它可以把程序渲染成古代书籍的样子。把O’Reilly系列图书印刷成古代线装书,真是想想就很激动啊。

安装与使用

文言文编程只需将repo下载到本地,而且本地已经安装Node,就能立即使用。现在它支持将wenyan lang转换成JavaScript和Python:

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

在这段命令中,如果不指定语言,程序将自动转化为JavaScript,若想转化成Python,请加入参数“—lang py”或是“-l py”。

用户也可以自行编译二进制文件。如果你只想尝尝鲜,在线IDE也是个不错的选择。

何出此“言”

至于,为何要炮制一门文言编程语言,少年为项目写有一序,由此可窥一二 (后有解读) :

夫唐、虞之世,結繩而足治,屈指而足算。是時豈料百代之後,計算機械之巧,精於公輸之木鳶,善於武侯之流馬;程式語言之多,繁若《天官》之星宿,奇勝《山經》之走獸。鼠、蟹、鑽、魚,或以速稱。蛇、象、駱、犀,各爭文采。方知鬼之所以夜哭,天之所以雨粟。然以文言編程者 ,似所未有。此誠非文脈之所以傳,文心之所以保。嗟予小子,遂有斯志。

然則數寸之烏絲猶覆於頭,萬卷之素書未破於手;一身長羁于远邦,兩耳久旷于雅言。然夫文章者吾之所宿好,程式者偶承時人之謬譽。故希孟不慚年少,莊生不望無涯。乃作斯言。誠未能嘔瀝長吉之心血,亦庶幾免於義山之流沫。既成之後,復學干將鑄劍而自飼,越王嚐糞而當先。自謂偶追《十書》之筆意,但恨少八家之淋漓。此子山所謂士衡抚掌而甘心,平子見陋而固宜。然則雖實覆甕之質,尚存斧正之望;雖乏呂相之金,易字之渴蓋同。此亦開源之大義,吾輩之所以勉勵也。一笑。

文中典故之多,恐无法在此一一注释,便以划重点之法,粗粗领会其意味,并简要传达为白话:

上古人类结绳记事,不会想到后代竟然发明了计算机。今天编程语言众星闪耀,只是没有人用文言编程。我人在国外,想念这些古典的言语,同时又擅长编程又有头发,决定为开源事业贡献一份力量。

注:如想查看所有典故,请前往项目页,出处皆有维基百科链接。

量子位循蛛丝马迹,得知少年名叫Huang Lingdong,来自卡耐基梅隆大学,如今大四,明年即将毕业。高中则毕业自上海世界外国语中学。

黄姓少年一路脑洞盛开,时常开发画风清奇之项目,量子位也曾为其另一项目撰文:

任君信笔涂鸦,皆可化作梦境中之角色,生龙活虎,与其他人物一同玩耍游荡。如百鬼夜行之雄风。

而文言文编程语言,大抵是少年迄今最为骄傲且最为瞩目之成就。

各位可速速前往吸之,定然无法自拔。

传送门

项目代码:
https://github.com/LingDong-/wenyan-lang

项目主页:
http://wenyan-lang.lingdong.works/

线上IDE试玩:
http://wenyan-lang.lingdong.works/ide.html

个人主页:
https://lingdong.works/

2019年度奖项发布!锁定AI Top玩家

50家领航企业、10大商业突破人物、10大最具创新力产品3大奖项出炉。

跟大咖交流 | 进入AI社群

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「在看」吧 !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/62418.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

60句高逼格的文言文,不收藏绝对是你的损失!

还记得前段时间火极一时的 “看到……应该想到” 系列吗&#xff1f; 由此可见国学早已渗透到生活的方方面面&#xff0c;关键时候还能映衬出你的儒&#xff08;liao&#xff09;雅&#xff08;mei&#xff09;高&#xff08;zhuang&#xff09;深&#xff08;bi&#xff09;。…

妙哉!那个用文言文编程的小哥,竟从28万行唐诗中找出了对称矩阵

梦晨 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 你能看出来&#xff0c;这首诗妙在哪里吗&#xff1f; 其实&#xff0c;横着读是一首诗&#xff0c;竖着读还是这首诗&#xff01; 而且&#xff0c;这首诗可不是乱编的&#xff0c;其中的诗句都来自《全唐诗》&#xff0c;…

文心一言 VS 讯飞星火 VS chatgpt (64)-- 算法导论6.5 3题

文心一言 VS 讯飞星火 VS chatgpt &#xff08;64&#xff09;-- 算法导论6.5 3题 三、要求用最小堆实现最小优先队列&#xff0c;请写出 HEAP-MINIMUM、HEAP-EXTRACT-MIN、HEAP DECREASE-KEY 和 MIN-HEAP-INSERT 的伪代码。 文心一言&#xff1a; 以下是使用最小堆实现最小…

chatgpt赋能Python-mac系统的python

在Mac系统上运行Python&#xff1a;一个简介 介绍 Python是一种流行的、易于学习的编程语言&#xff0c;被广泛用于各种用途&#xff0c;从数据分析到机器学习。如果您是Mac用户&#xff0c;那么您已经安装了Python&#xff0c;因为它是系统的一部分。本文将介绍如何在Mac系统…

微软 Copilot “杀疯了”,太刺激了...

1 刺激 这段时间真是太刺激了。 就在最近&#xff0c;微软宣布了 Copilots for Windows 11 以及其他一系列产品。作为AI助手&#xff0c;Windows Copilot将直接集成到Windows 11中&#xff0c;在所有应用和程序中都可使用&#xff0c;就像我们在Edge、Office程序和GitHub中看到…

GPT-4来了,计算机视觉科研,何去何从?

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>【计算机视觉】微信技术交流群 作者&#xff1a;Mike Shou |&#xff08;已授权转载&#xff09;编辑&#xff1a;CVer https://zhuanlan.zhihu.com/p/616966879 最近上课被…

【chatGpt】关于websocket连接中对未授权的捕捉问题

目录 问题 有效提问 有效的细节提问 问题 一路上&#xff0c;通过简单的error进行判断弹出授权&#xff0c;会有很多乱弹的现象&#xff1a; &#xff08;1&#xff09;链路正常切换会断 &#xff08;2&#xff09;服务器没有启动会连接不上 &#xff08;3&#xff09;没…

Vscode 用MarkDown画流程图

效果图 start>start: 开始 input>inputoutput: 输入 operation>operation: 操作 condition>condition: 操作出错&#xff1f; output>inputoutput: 输出 error>operation: 请重新输入 end>end: 结束start->input input->operation operation->co…

chatgpt赋能python:Python画图设置背景颜色

Python画图设置背景颜色 在Python中使用Matplotlib和Seaborn等库来生成数据可视化图表非常方便。但是&#xff0c;这些图表默认使用白色背景。有时&#xff0c;我们需要在制作图表时更改背景颜色以匹配我们的主题或品牌标识。本文将介绍如何在Matplotlib和Seaborn中设置不同的…

chatgpt赋能Python-python3如何画图

Python3如何画图&#xff1f; Python是一种高级编程语言&#xff0c;它有着多种用途&#xff0c;包括数据分析和可视化。Python3是Python的最新版本&#xff0c;它具有更好的性能和易用性。在这篇文章中&#xff0c;我们将介绍如何使用Python3来画图&#xff0c;并探讨其优势和…

chatgpt赋能python:Python画图坐标轴大小

Python画图坐标轴大小 Python是一种广泛使用的编程语言&#xff0c;它在科学计算和可视化方面得到了广泛的应用。在可视化中&#xff0c;坐标轴的大小和比例对于展现数据的真实性和清晰性至关重要。在本文中&#xff0c;我们将介绍如何使用Python画图坐标轴大小&#xff0c;并…

“烧钱”的大模型:初探成本拆解与推理优化方法

编者按&#xff1a;大模型的成本问题一直以来是大家重点关注的问题&#xff0c;本文重点讨论了训练大型语言模型&#xff08;LLMs&#xff09;需要的成本&#xff0c;并简要介绍什么是LLM以及一些用于优化大模型推理表现的技术。 虽然很难准确预测LLMs未来会怎么发展&#xff0…

Spring Cloud 优惠最后 1 天!

大家好&#xff0c;我是栈长。 关注了一段时间公众号的小伙伴都知道&#xff0c;栈长的 Spring Cloud 微服务课程每月都会给小伙伴搞一波活动。 61活动来了&#xff0c;很多小伙伴都在等 61 的活动&#xff0c;这次活动&#xff0c;福利全新升级&#xff0c;千万不要错过&#…

微信公众号文章是否违规怎么检测?

在写文章的时候&#xff0c;会遇到以下3种情况&#xff1a; 1、你所编辑的图文消息可能含有敏感内容&#xff0c;你可以继续保存或发布该图文消息&#xff08;发布等待时长约3-4小时&#xff09;&#xff0c;若保存或发布后&#xff0c;经核实含有敏感内容的&#xff0c;将可能…

如何发现并分析APP个人信息收集是否违规?

移动互联网的发展以及智能终端的兴起&#xff0c;手机已然成为了我们生活中不可或缺的“日用品”&#xff0c;各种手机APP开启霸屏模式&#xff0c;例如常见的支付APP、聊天APP、金融APP、交通APP等&#xff0c;这些APP虽然给我们生活带来了便利&#xff0c;但是其收集的用户信…

新闻稿的制作流程:从确定新闻稿目的到将其分发给媒体

对于任何希望向媒体和公众传达具有新闻价值的信息的组织来说&#xff0c;新闻稿都是必不可少的工具。精心制作的新闻稿可以帮助您宣传您的业务、产品或服务&#xff0c;并可以产生有价值的媒体报道。在本文中&#xff0c;我们将指导您完成新闻稿的制作过程&#xff0c;从确定新…

如何写新闻稿?写好新闻稿的技巧与步骤

新闻稿是传递新闻事件和信息的重要手段&#xff0c;是传媒工作中不可或缺的一部分。写好一篇新闻稿可以让受众了解更多信息&#xff0c;进一步提高他们的关注度。以下是一些写好新闻稿的技巧和步骤&#xff0c;帮助你有效地传达新闻。 1、确定新闻的核心信息 在开始写新闻稿之前…

怎么向新闻媒体投稿?新闻稿投稿渠道哪个比较好

在互联网众多媒体网站中&#xff0c;各大小中新闻媒体网站都拥有一定的权威性和知名度&#xff0c;作为网 媒&#xff0c;这些新闻网站相比纸类报刊更容易被大众网民接触&#xff0c;甚至有不少人还想联系网站将新闻或 者软文投放上去。当然了&#xff0c;如果是个人联系媒体…

国际学校入学考试MAP语法测试题真题讲解

本月&#xff0c;贝赛思各校区举行了四月的入学考试&#xff0c;部分校区采取了线上评估模式&#xff0c;而4月考试流程形式题型均与3月大同小异。 非常多的家庭会选择在中学阶段转入贝赛思&#xff0c;并且对国际学校了解的家长肯定对MAP测试不陌生&#xff0c;MAP测试既作为…

高考题改成IB试题,会是什么样子?

从2019年浙江高考语文卷的一篇现代文阅读说起的&#xff0c;振语看过了这道题和推文作者的解读后&#xff0c;一时兴起&#xff0c;就想着能不能把它改成一道IB考题&#xff0c;顺带着也把这篇选文细读评点了一番。 &#xff08;一&#xff09;高考试题再现&#xff1a; 这道高…