公众号关注 “GitHubDaily”

设为 “星标”,每天带你逛 GitHub!

如果东北话是编程语言中使用的主要语言,编程是否更招人稀罕?学习编程是否会更欢乐?

前段时间,机器之心刚介绍过以文言文为编程语言的 CMU 本科生项目。近日,圈内又惊现以东北方言词汇为基本关键字的编程语言(dongbei),此项目一出便有天雷勾地火,宝塔镇河妖之势。作者是一位 Google 的高级软件工程师 / 技术主管,同时也是 Google C++ 测试框架 googletest 以及 googlemock 的原作者。

项目地址:https://github.com/zhanyong-wan/dongbei

dongbei 是个啥项目?

简而言之,它是一门东北方言词汇为基本关键字的编程语言。作者在项目开篇便强调了此编程需要「以人为本」:

这玩意儿可是填补了世界方言编程地图上的一大片儿空地啊!这么说吧,谁要是看了 dongbei 程序能忍住了不笑,我敬他是纯爷们儿!

那它有啥特点咧?多了去了:

  • 简单啊!小学文化程度就行。您能看懂春晚不?能?那就没问题。

  • 好读啊!看着看着包您不由自主地念出声儿来。

  • 开心啊!呃,做人嘛,最重要的是要开心。

  • 开源啊!不但不要钱,而且不要脸 -- 随时随地欢迎东北话高手打脸指正。

dongbei 编程语言的开发采用了业界领先的 TDD(TreeNewBee-Driven Development)方式。具体地说,就是每个功能都是先把文案写好,八字没一撇牛皮就吹起来了,然后根据牛皮写测试案例,最后再实现功能让牛皮不被吹破。这样做有两大好处:第一每个功能都是有的放矢,不值得 tree new bee 的功能一概没有。第二确保了每个功能都有文案负责吹嘘,开发者的辛劳绝对不会被埋没。

不扯犊子了。翠花,上酸菜~~~

没事儿,跑两圈

项目是用来跑的,是骡子是马需要拉出来溜溜。用东北话写代码,看起来就比较有意思,因此我们也把这个项目拉到电脑上溜一溜。首先,只要你的系统有 Python 3,那就甭麻烦了,直接下载 GitHub 项目,跑 src/dongbei.py 就成。

如下短视频展示了下载及测试东北方言编程的简单过程,项目实测很好用:

我们用着非常顺滑,只需要保证开发环境有 Python 3 就行了。在上面的短视频中,我们测试了东北方言中的「Hello World」,即输出「唉呀,这嘎哒真他妈那啥!」。这里唯一需要注意的是东北方言代码文件需要确保字符编码方式为 UTF-8,即在代码文件最上一行加上「# -*- coding: utf-8 -*-」。

如果你觉得编译成功,完美地问候了世界,那我们写一小段循环语句:

# -*- coding: utf-8 -*-老王装仨。
老王从1到10磨叽:老王走两步。唠唠:老王。
磨叽完了!

直观理解起来就是:我们先给老王赋值为 3,然后循环十次,每次老王会加二。确实在运行中,我们也能得到期望的结果。不过值得注意的是,每次执行东北方言,它都会给出对应的 Python 代码,如下所示,「从 1 到 10 磨叽」展示的却是 range (1, 11),这也许是使 Python 更贴近方言语法。

东北方言编程还有很多待我们挖掘的地方,也有很多更有意思的扩展。项目作者在项目中详细介绍了各种词法与语法,其它开发者同样还提了很多有意思的建议,例如:

创建个新对象 - > 娶个新媳妇?

break - > 完犊子了

exit () -> 整没了

Exception - > 整岔劈了

type () -> 你瞅啥

也许等项目完善后,导入第三方库,用东北话写个神经网络也是阔以滴。

东北话「规则」大全

dongbei 固然好玩,但避免有些对我大东北方言整的不太明白的同学,作者也提供了一些词法,语法,语义的解释。

东北话词法

字符串常量:字符串常量的用法变化不大,比如依旧是需配对对应的双引号,这里理所应当配对的是中文全角双引号:

...“我是一个字符串”...

注释:注释依旧使用 #,在字符串常量外,从 # 号开始后的都会成为注释而被忽略掉:

唠唠:  # 我是一个注释。“嘎哈#?”。  # 我还是一个注释。
唠唠:“嘎哈#?”。

两者是一样一样滴。

分词:而分词方面,为了适应广大中文语言使用者,作者将其设定为加不加空格或换行都一样。要知道在西方各语言中,空格对分词的意义非常大,往往会导致整个词组或语句所表达的核心意思完全不同。下面我们来看看示例:

唠唠:“嘎哈?”。
唠唠:“嘎哈?”。

两者也是一样一样滴,没有任何区别。

名字:在 dongbei 的设定里,除了关键词、标点符号和常数,其余都是名字。「张三乘李四」会自动判定「乘」是关键词,「张三」「李四」是名字。如要避免这种情况,可以直接添加【】把一串字符标注为名字。

如【张三乘李四】则会完全被判定一个名字,而不是再将「乘」当作关键词。这一点在之前的文言编程中是做不到的,我们在写文言语句时经常要避开采用关键词做变量名。

常数:除了日常所用的阿拉伯数字所表示的十进制整数外,dongbei 同样可支持使用中文表达 0 - 10 的常数:

零一二三四五六七八九十

二也可以写成两或者俩。三也可以写成仨。「+」也可用中文「加」表示。

东北话语法

东北话词法承接厚重的中国文化,我们怎么用着舒服就怎么定义。而到了语法,一方面需要有对应的 Python 语句,另一方面也要保留原汁原味的东北话语法。dongbei 程序是通过多个语句组成,每一个语句通过句号「。」分隔。项目作者表示,为了表达开发者炽热的情感,结尾的句号也可以等价替代为感叹号「!」。

项目作者在 README 文件中描述的语法非常详细,但是我们感觉直接看示例更加便捷。要是在写东北话代码时遇到了问题,那时再具体看看 README 中的语法也是不错的选择。

具体而言,我们可以从如下 8 个方面了解整体语法情况,这也是项目作者准备的「dongbei 语言考试小抄」。

1. 变量

老张是活雷锋。  # 定义变量。初始值:啥也不是。
老张装二。  # 老张 = 2
削老张。  # 老张 = 啥也不是
老王是活雷锋。
老王装仨。  # 老王 = 3
老张装老王。  # 引用变量。老张 = 3

2. 运算

老张走走。  # 老张 += 1
老张走两步。  # 老张 += 2
老张退退。  # 老张 -= 1
老张推三步。  # 老张 -= 3
老张装老王加二。  # 老张 = 老王 + 2
老张装(老张减三)除以五乘老王。  # 老张 = (老张 - 3)/5*老王

3. 比较

老王比5大
7加二比老刘小
老张跟老王一样一样的
老李跟250不是一样一样的
老刘啥也不是

4. 打印

唠唠:“唉呀妈呀”。  # 打印字符串常量。
唠唠:老王。  # 打印变量的值。
唠唠:老王比老张大。  # 打印表达式的值。
唠唠:“老王是”、老王。  # 打印两个表达式的并置。

5. 条件

寻思:老王比老张大?
要行咧就唠唠:“老王!”。
要不行咧就唠唠:“老张!”。

6. 循环

老王从1到10磨叽:唠唠:老王。
磨叽完了!

7. 组合

寻思:老王比老张大?
要行咧就开整:唠唠:“老王!”。唠唠:“你好美!”。
整完了。

8. 套路

【阶乘】(那啥)咋整:  # 定义套路 阶乘,有一个参数 那啥。寻思:那啥比一小? # 需要自推吗?要行咧就 滚犊子吧 一。  # 返回值1。要不行咧就 滚犊子吧 那啥乘整【阶乘】(那啥减一)。  # 需要。返回自推结果。
整完了。  # 定义结束。唠唠:整【阶乘】(五)!  # 使用套路
推荐阅读:
硬核干货:一位码农的架构师封神之路!武汉疫情、国难面前竟有人骗捐款,我花了40个小时把他揪了出来小心,你的账号密码可能在 GitHub 上裸奔!分享靠写代码赚钱的一些门路答应我,别再 if/else 走天下了可以吗?

GitHub 牛逼项目:用东北话来编程,就问你怕不怕!相关推荐

  1. 一个丧心病狂的Github项目:东北话编程,大写的服!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:开源最前线(ID:OpenSourceTop) 还记得12月 ...

  2. 这 7 个牛逼项目,不来看看~~

    大家好,我是可爱又机灵的开源小妹! 好快哦,不知不觉11月份又过了一周了,大家工作都还顺利嘛~~ 照例,小妹花时间把2022年10月分享过的七个牛逼开源项目整理了一下,方便大家进行查看和收藏! 1.A ...

  3. GitHub牛逼开源项目!像写 Markdown 一样画流程图

    点击上方"Github爱好者社区",选择星标 回复"资料",获取小编整理的一份资料 文章转载于:GitHub黑板报  今天推荐的这个项目是「mermaid」,一 ...

  4. 推荐 19 个 github 超牛逼项目!

    持续更新中... 基于SpringBoot的ERP系统,自带进销存+财务+生产功能 推荐3个快速开发平台 前后端都有 项目经验又有着落了 推荐一款开源 Java 版的视频管理系统 基于SpringBo ...

  5. 这就是巨人的肩膀!2018年阿里巴巴开源的那些牛逼项目汇总

    导读: 开源展示了人类共同协作,成果分享的魅力,每一次技术发展都是站在巨人的肩膀上,技术诸多创新和发展往往就是基于开源发展起来的,没有任何一家网络公司可以不使用开源技术,仅靠自身技术而发展起来.阿里巴 ...

  6. 牛逼,三句话搞懂 Redis 缓存穿透、击穿、雪崩!

    前言 如何有效的理解并且区分 Reids 穿透.击穿和雪崩之间的区别,一直以来都挺困扰我的.特别是穿透和击穿,过一段时间就稀里糊涂的分不清了. 为了有效的帮助笔者自己,以及拥有同样烦恼的朋友们区分这三 ...

  7. 真正牛逼的员工,是让领导又爱又怕

    不要怕领导压榨,你反过来可以压榨领导,把领导当做"资源",使劲儿用,拼命用.当你让领导又爱又怕,成功的机会也就离你更近了. 作者:格总  来源: 格总在人间(ID:I-Gargam ...

  8. Serializable 都这么牛逼了,Parcelable 还要你何用?

    一些闲聊 距离上一篇文章似乎又是很久了,看起来也没有很多反馈,催更就更不用说了.哈哈,放弃了. 话说最近公司在招聘一批至少 5 年开发经验的 Android 开发工程师,我也是忙开了花,激动得不行呀. ...

  9. python项目2019_2019 年 11 月精选 GitHub 上 几个牛逼 Python 的项目

    熟悉小帅b的朋友们都知道,小帅b每个月都会精选几个比较不错的 GitHub 项目给大家参考参考,这不 2019 年只剩下最后一个月了,忍不住想问一句: 你被裁了么?你又胖了么? ok,咱们进入正题: ...

最新文章

  1. Could not install packages due to anEnvironmentError: [WinError 5] 拒绝访问
  2. 白话Elasticsearch68-ES生产集群部署重要的操作系统设置
  3. 银保监局招聘计算机岗位备考,2019年中国银保监会招聘计算机类如何备考?
  4. 描述符应用 -- 让python变成一个强类型的语言
  5. 未来我们对微服务和 Serverless 架构有什么期望
  6. 机房动力环境监控对消防子系统、UPS不间断电源监控方案
  7. 业务需求、客户需求与功能需求
  8. springboot封装统一查询对象进行多条件查询案例(mybatis和mybatis-plus+反射两种版本)
  9. linux查看磁盘占用
  10. JavaScript内部实现
  11. html怎么引入圆角插件,jQuery圆角插件demo页面 张鑫旭-鑫空间-鑫生活
  12. 随想录(cloud 网络库)
  13. 设计模式笔记之六:生产消费者模式
  14. java递归遍历文件夹下所有文件
  15. CleanMyPC中文版切换教程(专注于电脑缓存文件清理的工具)
  16. windows快捷键之预览窗格
  17. 如何快速入门 Python 爬虫
  18. 数字电路基础01(含半加器、全加器、逻辑化简、卡诺图化简)
  19. Sails.js自动化Api实践与测试
  20. 计算机科学见刊之后多久检索,论文见刊后多久可以检索

热门文章

  1. 【随笔】AI+眼镜行业
  2. 2020年河南科技大学892西方经济学考研真题题库等资料汇总
  3. 禁止 mysql nobody_linux中nobody账号的相关解释
  4. python字典增删改查项目_字典的增删改查如何操作?
  5. linux改主机名redhat7永久,云服务器centos7永久更改主机名
  6. 我爱你,没有什么目的:情感日志
  7. (一)ROS Kinetic的安装与配置,
  8. 2021-05-18 人头检测 version-slim(主干精简速度略快),version-RFB(加入了修改后的RFB模块,精度更高)
  9. .NET 对于构建系统应用的探索历程
  10. RK3399平台开发系列讲解(UART子系统)4.26、TTY子系统之系统框架