近日,世界上第一个古汉语编程语言在 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

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

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

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

  2. c语言怎么取字符串首字母,C语言 字符串首字母转换成大写简单实例

    C语言 字符串首字母转换成大写简单实例 C语言 字符串首字母转换成大写简单实例 举例: 输入:this is a book 返回:This Is A Book #include #include #i ...

  3. Golang语言全栈开发视频教程全集

    基础课: 语言基础第01天(变量和基本类型) 语言基础第02天(运算符和流程控制) 语言基础第03天(循环函数和工程管理) 语言基础第04天(工程管理和数组) 语言基础第05天(切片和map) 语言基 ...

  4. 脚本语言适合物联网开发吗

    序言 物联网在今天已经不是一个新词汇,尤其是"物"这么接地气的东西,在互联网深入到各行各业时,自然而然会结合在一起,形成物联网. 这个"物",就是千奇百怪.多种 ...

  5. RStudio v1.2.1335 发布,R 语言的集成开发环境

    开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>   RStudio 是 R 语言的集成开发环境,分为面向桌面用户 IDE 和 Linux R 服务器版编辑器两种编辑器 ...

  6. python基于什么语言-一种基于Python语言的EDA开发平台及其使用方法与流程

    本发明涉及EDA开发的技术领域,尤其是指一种基于Python语言的EDA开发平台及其使用方法. 背景技术: 目前,主流的EDA设计语言Verilog HDL能实现完整的芯片硬件逻辑电路开发,但是其代码 ...

  7. python语言的编程模式_一种基于Python语言的EDA开发平台及其使用方法与流程

    本发明涉及EDA开发的技术领域,尤其是指一种基于Python语言的EDA开发平台及其使用方法. 背景技术: 目前,主流的EDA设计语言Verilog HDL能实现完整的芯片硬件逻辑电路开发,但是其代码 ...

  8. 安卓开发语言php,go语言支持安卓开发吗

    go语言支持安卓开发.使用golang开发android需要下载安装gomobile,然后有两种开发方式,分别为:1.原生应用开发:2.混合绑定开发. 本教程操作环境:windows10系统.GO 1 ...

  9. C语言核心技术-C语言概述与开发环境搭建

    C语言概述 C语言发展简史 起源 1972年,贝尔实验室的Dennis Ritchie和Ken Thompson在开发Unix操作系统时设计了C语言,该操作系统的90%以上的代码都是由C语言实现,后期 ...

最新文章

  1. 生信服务器 | Linux 时间戳和标准时间
  2. 中小型网络系统总体规划与设计(Small and medium-sized network system overall planning and design)
  3. 自己动手利用KVM和Intel VT实现简单虚拟机
  4. android中requestFocus 以及与setFocusable的区别
  5. 不用NAS,无需attention,只用3x3卷积和ReLU 的SOTA算法RepVGG
  6. DevExpress GridView 添加和设置右键菜单
  7. 多人博客php源码,wusx php多用户博客(基础thinkphp)
  8. .net找List1和List2的差集
  9. Google 员工公开 Windows 10 零日漏洞隐藏 Bug!
  10. Google I/O 2019 将于5月7日举办
  11. Java开发笔记(一百四十二)JavaFX的对话框
  12. 几种常见的Java排序算法
  13. 环境监测设备中,使用GPS模拟器测试TTFF和灵敏度的注意点
  14. js获取屏幕、浏览器、页面的高度宽度
  15. 曲线运动与万有引力公式_物质自旋与力的形成 ——关于万有引力与磁荷力本质与统一问题的探讨...
  16. 树形加法器(Brent-Kung加法器)
  17. 使用python创建NBA Shotchart
  18. 深度学习与AI入门——追风记
  19. Exchange控制台错误:WinRM客户端已将请求发送到HTTP服务器
  20. 2021年中国银行间同业拆借成交额及加权平均利率分析:成交额、同业拆借及质押式回购加权平均利率均呈增长趋势[图]

热门文章

  1. 思科网络安全 第十一章测验答案
  2. 玉米社:seo优化推广 网站收录一直不太好什么原因?
  3. Can‘t write; duplicate key in table ‘qrtz_triggers‘
  4. 计算机教师职称申报工作总结,教师职称评定个人工作总结(精选3篇)
  5. Ubuntu之[福昕pdf安装与卸载]
  6. 计算机睡眠状态单机游戏,睡眠神经图 电脑版
  7. matlab 与eyelink,EyeLink眼动追踪系统
  8. 水深6到9米有鱼吗_我国四大家鱼之一,营养价值高,为何很少有人养殖?|青鱼|养殖|草鱼|罗非鱼|淡水鱼|黑鱼...
  9. 【考研英语——刘晓燕语法、简单句和长难句笔记】
  10. 移动硬盘新加卷变为本地磁盘且不能打开磁盘查看文件