一个丧心病狂的Github项目:东北话编程,大写的服!-程序员宅基地

点击上方“Java之间”,选择“置顶或者星标”

你关注的就是我关心的!

来源:开源最前线(ID:OpenSourceTop) 

上一篇:IDEA 插件推荐: EasyCode一键生成所需代码~

还记得12月份刷爆朋友圈的那个文言文编程语言么?

这个项目是一位名为Huang Lingdong的大四学生创建的,当时,就连中科院计算所研究员、机器翻译领域知名专家刘群老师都赞叹道:后生可畏。

近日,Github上一个名叫dongbei的开源编程项目,再一次引起大家关注,这是一个以东北方言词汇为基本关键字的编程语言——dongbei  大写的服!

该项目作者是一位 Google 的高级软件工程师/技术主管,同时也是 Google C++测试框架 googletest 以及 googlemock 的原作者。(Github地址:https://github.com/zhanyong-wan/dongbei)

根据项目作者介绍:

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

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

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

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

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

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

总而言之,dongbei 语言具有极高的娱技比(娱乐精

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

再来就是系统支持的问题了,donbei只需要保证开发环境有Python 3 ,直接下载GitHub项目,跑src/dongbei.py,这事儿就成了。

我们还是先来个东北味儿的hello World程序吧:

唠唠:“唉呀,这嘎哒真他妈那啥!”。

用 utf-8 编码保存。要是编辑器因为编码错误埋汰你,那就把文件内容改成:

# -*- coding: utf-8 -*-

唠唠:“唉呀,这嘎哒真他妈那啥!”。

再试,应该就成了。然后在命令行窗口运行:

src/dongbei.py hello-world.dongbei

你应该看到执行结果:

唉呀,这嘎哒真他妈那啥!

语法规则

学习一门语言,先得了解它的词法、语法和语义,下面我们就一点一点来了解一下:

词法

字符串常量

一行代码当中,要是出现配对的中文全角双引号,比如

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

那么引号当中的内容(我是一个字符串)会被当成一个字符串常量。

常数

除了用阿拉伯数字表示的十进制整数(比如 2、42、250,等等),0 到 10 的常数也可以用中文表达:

零一二三四五六七八九十

二也可以写成两或者俩。三也可以写成仨。

语句

一个 dongbei 程序是由一串语句组成的。每个语句以句号(。)结束。为了表达程序员炽热的感情,也可以用感叹号(!)结束,意思和句号是一样一样的。请大家根据自己的心情任选使用。

1、变量

dongbei 语言允许使用任何字符串做变量名。定义变量如下:

老王是活雷锋。

2、给变量赋值

dongbei 语言不整“赋值”这种文绉绉的词儿。咱们叫“装”。比如:

老王装二。

可以理解为 C 语言的

lao_wang = 2;

要把一个活雷锋的值清空回到原始状态,可以用削:

削老王。

过后老王就啥也不是了。

3、增减变量

活雷锋除了会装,加加减减也是常见的操作。按没病走两步的规矩,这些操作的名字叫做:走走、稍稍、走X步、稍X步。比如:

老张装二。  # 现在老张等于2
老张走走。  # 现在老张等于3
老张走两步。  # 现在老张等于5
老张稍稍。  # 现在老张等于4
老张稍五步。  # 现在老张等于-1

4、输出

要输出信息,咱们得说“唠唠”。假定要说的信息是 YY,就得写

唠唠:YY。

5、循环

磨叽,就是一遍一遍循环。 所以,在 dongbei 语言里循环的写法是:

老王从一到五磨叽:  # 老王从1走到5。
  唠唠:老王!  # 打印老王的当前值。
磨叽完了!  # 循环结束。

运行结果如下:

1
2
3
4
5

6、条件

虽然 dongbei 人都是活雷锋,干活的时候该讲条件还是要讲条件的。寻思是一项很有用的技能!比如有件事情(不妨叫做 XXX)只想在某个条件(不妨叫 CCC)成立的时候再做,就写:

寻思:CCC ?
要行咧就 XXX

要是 CCC 不成立的时候俺们有另外一件事情 YYY 要做,那就写:

寻思:CCC ?
要行咧就 XXX
要不行咧就 YYY

7、套路

“套路”这名字听着吓人,其实就是给一串常用的组合拳取一个名字,定义套路用这个格式:

套路名字 咋整:
  ...  # 爱做的事儿
整完了。

下面定义一个叫“写九九表”的套路。注意定义套路本身不会让这个套路真的跑起来。所以下面这段程序跑的结果是啥也不做。

写九九表咋整:  # 定义套路 写九九表。
  老王从1到9磨叽:
    老张从老王到9磨叽:
      唠唠:老王、“*”、老张、“=”、老王乘老张。  # 打印 X*Y=Z
    磨叽完了。
    唠唠:“”。  # 空一行。
  磨叽完了。
整完了。  # 结束套路定义。

想把上面的套路跑一遍,你得写:

整写九九表。

然后,你就可以输出一份九九乘法表啦:

1*1=1
1*2=2
1*3=3
...

8*8=64
8*9=72

9*9=81

项目的issue上,更是好多热心网友给出建议:

你觉得这门东北方言的编程语言好不好使呢?如果你也对它感兴趣,可以去Github上下载下来好好研究研究。

最后附上Github地址:https://github.com/zhanyong-wan/dongbei

最近热文阅读:

1、IDEA 插件推荐: EasyCode一键生成所需代码~

2、小心避坑:MySQL分页时使用 limit+order by 会出现数据重复问题

3、注意!Apache Dubbo 这几个版本出现严重安全漏洞

4、大名鼎鼎的LVS:常见的三种负载均衡方式比较!

5、IntelliJ IDEA 的 2020 ,很牛皮!(破音)

6、终于有人把 Nginx 说清楚了,图文详解!

7、一条简单的更新语句,MySQL是如何加锁的?

8、推荐几个IDEA插件,Java开发者撸码利器

9、Java8很香但还是想升级到Java11,教你怎么从Java8升级到Java11

10、代码生成器:IDEA 强大的 Live Templates

关注公众号,你想要的Java都在这里

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44337261/article/details/104403922

智能推荐

Modern Cross Platform Development_shim layers for gpl license-程序员宅基地

文章浏览阅读1.8k次。Modern Cross Platform DevelopmentWhy isn't there a modern technology available for using the same codebase to produce native apps on all of the currently popular platforms - I'm talking iOS_shim layers for gpl license

HashMap 的 7 种遍历方式与性能分析!(强烈推荐)-程序员宅基地

文章浏览阅读1.3k次。随着 JDK 1.8 Streams API 的发布,使得 HashMap 拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题。本文先从 HashMap 的遍历方法讲起,然后再从性能、原理以及安全性等方面,来分析 HashMap 各种遍历方式的优势与不足,本文主要内容如下图所示:HashMap 遍历HashMap遍历从大的方向来说,可分为以下 4 类:迭代器(Itera..._遍历hashmap使用迭代器的好处

计算机教程无线路由器桥接上网,两个路由器无线桥接-程序员宅基地

文章浏览阅读3.1k次,点赞3次,收藏13次。本文鸿哥主要给大家介绍下,两个路由器无线桥接设置方法。无线桥接这个功能,是一个比较实用的功能,一般在以下场景下会使用到:已经有一个无线路由器了,但是该路由器的无线信号不能满足使用需求,家里部分区域没有wifi信号或者信号不好。这个时候可以再买一个无线路由器回来,把两个路由器之间设置无线桥接,桥接成功后第二个路由器也可以上网了,从而实现增强无线信号的目的。两个路由器无线桥接重要说明:(1)、不同的无..._无线桥接网桥是使用主路由的ip还是副路由的

gdb图形化工具gdbgui的安装_gdbgui 怎么安装运行-程序员宅基地

文章浏览阅读5k次,点赞2次,收藏3次。系统环境:python环境:下面进行安装:(均以root用户安装)1.安装pipxcurl https://raw.githubusercontent.com/cs01/pipx/master/get-pipx.py | python3出问题了,提示安装方法失效了。打开链接:https://github.com/pipxproject/pipx找到以下部分:注意:这里有个坑,我们..._gdbgui 怎么安装运行

二叉树的层序遍历算法_编写算法,实现二叉树的层序遍历-程序员宅基地

文章浏览阅读291次。二叉树的层序遍历算法是一种按照层级顺序访问节点的方法,它利用队列的先进先出特性来实现。通过遍历每一层的节点,并将其子节点入队,我们可以按照层级顺序获取二叉树中的节点值。在这篇文章中,我们将介绍如何实现二叉树的层序遍历算法,并给出相应的源代码。在每一次迭代中,我们首先取出队首节点,访问它,并将它的左右子节点(如果存在)依次入队。如果该节点存在右子节点,则将右子节点入队。变量记录当前层的节点数量,这是为了在内层循环中准确地遍历当前层的节点。以上示例中,我们创建了一个二叉树,并使用层序遍历算法对其进行遍历。_编写算法,实现二叉树的层序遍历

linux usb虚拟网卡(NCM)_linux usb ncm-程序员宅基地

文章浏览阅读6.6k次。1. kernel config<M>USB Gadget precomposed configurations<M>Ethernet Gadget (with CDC Ethernet support) <M>Network Control Model (NCM) support2. build modulesmake ARCH=arm64 CROSS_COMPILE=aar..._linux usb ncm

随便推点

cad指定许可服务器,AutoCAD许可证版本-程序员宅基地

文章浏览阅读5.2k次。本文概述AutoCAD许可版本的订阅包括AutoCAD, 专用工具集和应用程序。订阅AutoCAD软件可以访问AutoCAD for Windows和AutoCAD for Mac, Web应用程序, 移动应用程序, 电气工具集, 机械工具集, Map 3D工具集, 特定于行业的体系结构工具集, Plant 3D工具集, MEP工具集和栅格设计工具集。栅格设计工具集仅适用于Windows。不同国家..._cad指定许可服务器

字符串与其声明_c语言声明字符串-程序员宅基地

文章浏览阅读4.2k次,点赞3次,收藏14次。字符串及其声明_c语言声明字符串

python快速提取网页表格_python 提取网页中的表格-程序员宅基地

文章浏览阅读220次。【代码】python快速提取网页表格。_python 提取网页中的表格

重磅:保障汽车软件安全更新 美国研发新开源框架_汽车开源软件安全-程序员宅基地

文章浏览阅读457次。导读汽车工业正在走向车联网时代,迅速发展之际,安全形势也日益严峻。最近,美国科研人员开发了一个免费、通用、开源的软件框架,用于保护汽车中的软件更新。在开源框架投入汽车工业使用之前,研究团队呼吁世界各地的安全专家帮助他们寻找该框架的漏洞。简介这款开源安全软件框架名为“Uptane”,它在目前广泛使用的“TUF”(软件更新框架)基础上发展而来。Uptane 项目,由纽约大学坦登工程学院..._汽车开源软件安全

Spring4MVC 基本配置_springmvc4 静态配置-程序员宅基地

文章浏览阅读898次。SpringMVC的定制配置需要继承一个WebMvcConfigurerAdapter类,重写这个类的方法,完成常用配置。@Configuration@EnableWebMvc@ComponentScan("com.netant.spring4")public class WebMvcConfig extends WebMvcConfigurerAdapter{视图解析器 /** 视图解_springmvc4 静态配置

第三十二节 java学习 —— Applet_java applet是在哪学的-程序员宅基地

文章浏览阅读324次。1》Applet的定义applet是java语言编写的,无法独立运行,但是可以镶嵌到网页中执行。它扩展了传统的编程结构和方法,可以通过互联网发布到任何具有java编译环境的浏览的个体计算机上。 2》Applet用途用户可以静态显示Applet,像显示一副图片或一段文本一样;Applet可以是一个动态交互过程,用户输入简单的数据产生相应的响应。3》Applet编写的格式在编写_java applet是在哪学的

推荐文章

热门文章

相关标签