近日,世界上第一个古汉语编程语言在 Github 上横空出世,由该古汉语编程语言编写的程序现已达到了数十个,有圆周率计算方法,甚至有《易经》的算命算法。

截至目前,该项目在 Github 上已获赞 14.7k,引起诸多关注。

更让人惊奇的是,这套古汉语编程语言(wenyan-lang)的开发者 Lingdong Huang 是一名中国留学生,于去年在卡内基梅隆大学(CMU)获得了计算机和艺术学位,他曾参与创作迄今为止唯一由人工智能生成的中国戏曲,将传统文化融入技术中。

「昔有苍颉作书,而天雨栗,鬼夜哭」,汉字的出现,诞生了世界上一个伟大的文明,将知识传播到四海之外,而如今代码组成了整个庞大的数字世界,用文言文来编程,让古代文字在新时代焕发新生。

传承文脉、保护文心。

「夫唐、虞之世,結繩而足治,屈指而足算。是時豈料百代之後,計算機械之巧,精於公輸之木鳶,善於武侯之流馬;程式語言之多,繁若《天官》之星宿,奇勝《山經》之走獸...」

项目开篇,即是作者用文言文写的项目序言,介绍了建立项目的初衷:传承文脉、保护文心。

汉字的出现,让我们看到了中华文明时代到来的灿烂曙光。而编程语言的出现,让计算机也能懂得语言,极大促进了现代文明的发展。

那么,文言文和编程语言相碰撞又会有怎样的火花呢?作者又是怎样实现用文言文编程的呢?

用文言文写代码

用文言文编程不仅仅是将英文字符转换为文言文这么简单,而是需要运用到自然语言处理技术(NLP),将文言编程语言编译成 JaveScript 等编程语言,最后再运行程序得到结果。

若用文言编程语言来表达编程界经典的代码「Helloworld」,应该这样写:

这里具体思路是,先定义一个数为「3」,并将它赋值给「甲」,即甲=3,然后进入一个循环,遍历「問天地好在。」这个语句「甲」次。

将它转换为 JavaScript 语言,是这样的:

结果输出:

你以为文言编程就只有这些吗?那你就太小瞧它了。

著名的「八皇后问题」、「汉诺塔」等问题,它样样精通,甚至还可以画图。

在作者的网站上可以在线编译,大家也可以一试。

Github 网站:https://github.com/wenyan-lang/wenyan

古文代码生成器

此外,作者还开发了一个「古文代码生成器」,将文言文代码转到古书的页面上,从右到左,从上到下,没有标点的古文,带有十足的古典气息。

古汉语编程语言使用的是繁体汉字和古汉语语法,然而如何划分句子却成了难题,因为需要古汉语在不使用空格的前提下将句子分为单词。就如我们看到英语单词「pancakebatter」,我们需要依赖先验知识将其划分为「pancake batter」,而不是「pan cakebatter」。

为了解决这个问题,作者指出文言编程语言只需要拥有一定数量的关键词,这样每次运行时,扫描最长的关键词到最短的关键词来得到目标内容。

语法

作为一种「新语言」,除了有关键词,当然还有语法,无论是定义变量还是执行循环等,文言文都有其对应的语法。

变量命名

循环

网友评价

对于发布世界上第一种古语言编程语言的新闻,早已引发了热议。在 Reddit 上,不少网友发表了自己的看法。

这位网友认为,中国应该支持这种创新,进一步将计算机科学融入中国本土文化,在编译源代码时,可以将英语或任何其他语言作为编程语言,之后将一系列字母或单词解析为有意义的符号,然后将符号转换为机器代码。汉字已经是有意义的符号了,因此此番基于汉字的编程语言可以免去很多解析,这是极好的。

另一位网友也表示赞同,他认为,汉字具有含义,它可以表达任何语言,而且语法是固定且简单的,因此特别适合编程。

其实,这不是第一次将中国文化融入代码文化中,几百年前二进制的诞生竟也与《易经》有密不可分的关系。

二进制与《易经》

当我们在 LCD 屏幕上观看数字图像,在 MP3 上聆听音乐时,我们很难想象这背后的原理是一串二进制信号,通常由 0 和 1 表示。二进制数字系统(0 和 1)构成了所有现代计算系统的基础。它用两个数字就重构了各种场景,进行高速的运算。

17 世纪著名的数学家莱布尼茨(Leibniz)发明了这个重要的数字系统。那么他又是如何创建二进制的呢?据《卫报》专栏作家大卫沃尔特(David Walter)报道,莱布尼茨的灵感来自有着五千年历史的中国哲学核心著作——《易经》。

《易经》是中国最古老的古典文字和占卜系统之一,被认为比有记载的历史更早一些。它的核心是八卦,也可以延伸为六十四卦。《易经》代表了现实的两极,阴和阳,就像 1 和 0 一样,它们都是抽象概念。在八卦中,虚线代表阴,实线代表阳,这些线以三个为一组组合在一起,产生了八个基本的卦,然后又合在一起得到了六十四个卦,每个卦都有自己的含义和解释。

沃尔特解释说,六十四卦代表了人类生命本身的原型状态。在《易经》的哲学中,现实并不完全是真实的,它更像是一个梦想或幻想,现实源于阴和阳的二元性,它们发挥出了无限的组合。

因此,从易经的观点来看,在现实的梦境中,任何事物都可以被表示成由计算机处理的二进制成分模型,即由一串 1 和 0 组成的字符串。

莱布尼茨深受《易经》中哲学思想的影响,在他的《二进制算数的解释》(1703)这本书中写道:卦是二进制数字系统通用的基础,可以采用卦中阴阳符号表示二进制序列。因此 ¦¦¦¦¦¦ 代表 000000,而 ¦¦¦¦¦︳代表 000001,以此类推。

参考链接:

[1] https://spectrum.ieee.org/tech-talk/computing/software/classical-chinese

[2]https://www.theguardian.com/books/2014/mar/21/ancient-book-wisdom-i-ching-computer-binary-code

往期精彩回顾不能错过的人工智能全球 2000 位最具影响力学者榜单 | 重磅发布扫码关注学术头条 点击

mixly编程怎样音乐_华人留学生开发首个古汉语编程语言,实现易经算命、圆周率计算,Github获赞14.7k...相关推荐

  1. 1998ieee圆周率c语言,华人留学生开发首个古汉语编程语言,实现易经算命、圆周率计算,Github获赞14.7k...

    近日,世界上第一个古汉语编程语言在 Github 上横空出世,由该古汉语编程语言编写的程序现已达到了数十个,有圆周率计算方法,甚至有<易经>的算命算法. 截至目前,该项目在 Github ...

  2. mixly编程怎样音乐_使用mixly和Arduino结合蜂鸣器播放音乐

    蜂鸣器结合Arduino播放<蜗牛和黄鹂鸟>歌曲 首先挑好想做的歌曲的简谱. 比如我想做<蜗牛和黄鹂鸟> 然后对照音阶对应的频率表来写代码 撤销:Ctrl/Command + ...

  3. 2021年编程列入高考_什么是2021年最佳的后端编程语言?

    2021年编程列入高考 It has been almost eight months in 2020, and yet the forecasts for 2020 do not seem to e ...

  4. python编程小知识_分享Python开发中要注意的十个小贴士

    大家请注意:这篇文中假设我们都用的是Python 3 1. 列表推导式 你有一个list:bag = [1, 2, 3, 4, 5] 现在你想让所有元素翻倍,让它看起来是这个样子:[2, 4, 6, ...

  5. 机器人编程python代码_自己动手开发智能聊天机器人完全指南(附python完整源码)...

    一.前言 人工智能时代,开发一款自己的智能问答机器人,一方面提升自己的AI能力,另一方面作为转型AI的实战练习.在此把学习过程记录下来,算是自己的笔记. 二.正文 2.1 下载pyaiml 下载pya ...

  6. python从入门到精通编程汪老师_游戏AI开发从入门到精通:最全游戏AI编程书单...

    闲来无事,把至今出版过的比较知名的游戏 AI 编程书籍整理了一遍,分了包括游戏AI.游AI戏建模.AI设计策划.自然语言编程.人工智能学术类书籍等八个大类,约45本.附上亚马逊的购买连接(国内介绍太少 ...

  7. python编程控制机器人_基于Python开发的微信图灵机器人

    在过去的几个月中,由于在新生群中回答问题费时费力,同时又有许多重复而又有固定答案的回答,我受到一些知乎文章的启发,维护了一个基于itchat的群聊机器人.从刚开始接入图灵机器人时只会尬聊的机器人,之后 ...

  8. python编程免费小说_使用Python开发小说下载器,不再为下载小说而发愁

    有点荒废 这几天有点荒废,之前弃坑的网文<伏天氏>,这几天又给捡起来了.然后一发不可收拾的只想看小说,荒废了我的学习.在这里我要检讨啊..... 像我这样的穷人,看小说肯定是找免费的网站, ...

  9. 人工智能ai用什么编程语言_用于AI开发的6种最佳编程语言

    人工智能ai用什么编程语言 AI( 人工智能 )为应用程序开发人员开辟了无限的可能性. 通过利用机器学习或深度学习,您可以产生更好的用户配置文件,个性化设置和推荐,或者合并更智能的搜索,语音界面或智能 ...

最新文章

  1. 从业务发展的阶段看系统发展
  2. 学界 | DeepMind想用IQ题测试AI的抽象思维能力,进展还不错
  3. idea springboot配置外置tomcat好处
  4. bzoj1078【SCOI2008】斜堆
  5. windows7如何查看端口被占用
  6. 【转】SAP的标准委外采购中都有哪些坑
  7. 基于DataTabel的增删改查
  8. Git之Stash(储藏)备份当前的工作区的内容
  9. 《Reids 设计与实现》第十一章 服务器
  10. mysql 命令 字符集_MySQL的字符集操作命令总结
  11. NUC1076 LCD-Display【打印图案】
  12. UI自动化:单元测试框架
  13. 关于第十届省赛失败的总结
  14. 大数据平台应用 17 个关键技术处理
  15. charles使用合集
  16. 从机器学习到深度学习
  17. rubyinstaller官方下载
  18. 阅读小结:MSR:From Captions to Visual Concepts and Back
  19. 4A(统一安全管控平台)解析
  20. SOUI总结之盒子模型

热门文章

  1. 最佳拟合直线_JAVA
  2. opencv的K近邻算法
  3. 【C++】31. Boost::circular_buffer——循环缓冲区
  4. 基于R-CNN的物体检测-CVPR 2014
  5. 【面向代码】学习 Deep Learning Convolution Neural Network(CNN)
  6. 图像检索:图像拷贝检索PHash改进方案
  7. Transact_SQL小手册(各种sql语句大集合)
  8. Git笔记(三)——[cherry-pick, merge, rebase]
  9. 使用Spring Boot开发Web项目
  10. java提高篇之数组(1):认识JAVA数组