基于文言文的编程语言 (哪种编程语言适合当母语)

在github翻出来了一个非常接地气的编程语言项目:dongbei。

哪种编程语言适合当母语,编程语言文言文

“dongbei”,即以东北方言词汇为基础, 以人为中心的编程语言

这种语言的文法设计和关键字的选择,都是建立在 东北人民 喜闻乐见的基础上,饱含着 白山黑水之情 。这是一种完全自主设计、开发和实现的,以人为中心的编程语言。

dongbei编程语言的特点如下:

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

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

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

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

采用了业界领先的 TDD(TreeNewBee-Driven Development) 方式。

“以人为本”新语言

众所周知,世界上有许多编程语言。例如:过程式、函数式、逻辑式、面向对象式。

但到目前为止还没有一种“以人为本”的编程语言。

简而言之就是:dongbei是用东北话编程序,换壳什么不重要,重要的是“以人为本”。

哪种编程语言适合当母语,编程语言文言文

从介绍里就可以看出作者对自己开发的语言很有信心,直接说:“ 这玩意儿可是填补了世界方言编程地图上的一大片儿空地啊! 这么说吧,谁要是看了 dongbei 程序能忍住了不笑,我敬他是纯爷们儿!

从这门语言的发展过程中,我们可以看出作者的实践方法确实很有东北特色。

具体地说,这种名为 dongbei的编程语言的开发采用了行业领先的 TDD (TreeNewBee-Driven Development)方法,即每一个功能都是先写好文案,八字没一撇牛皮就吹起来了,然后根据牛皮写测试案例,最后实现一个功能,让牛皮不被吹破。

规则简单明了

Dongbei语言的规则也很好理解,我们把常用的规则罗列一下,这样对东北话不熟悉的小伙伴也能很快掌握。

词法

字符串 很简单,中文全角双引号之间的内容就是一个字符串常量,例如:

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

注释 :在字符串常量外面出现 # 字符,#之后的内容为注释内容,比如:

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

的效果等于

唠唠:“嘎哈#?”。

分词 :为了适应华人书写习惯,对分词这一块来说,dongbei语言加不加空格换行都无所谓。 比如:

唠
 唠
    :
         “嘎哈?”
                。

的效果等于

唠唠:“嘎哈?”。

名字 :代码里面除了各种有特俗意义的关键词(keyword),还会有各种用户定义的名字(变量名、函数名、类型名,等等)。 在dongbei语言里面,除了关键词、标点符号和常数,剩下的都是名字。 比如,在“张三乘李四”这个 dongbei 语言表达式里,“乘”是一个关键词,“张三”和“李四”是两个不同的名字。

并且,为了解决名字和关键词之间需不需要回避的问题,dongbei语言允许你用中文全角方括号【】把一串字符标注为名字。 比如,“【阶乘】”就明明白白地是一个叫“阶乘”的名字,绝对不会被当成是名字“阶”加关键词“乘”。

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

零一二(两/俩)三(仨)四五六七八九十

语法

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

并且,除了GitHub中详细到有点“婆妈”的README,作者还放出了一个小抄,方便大家在写代码时碰到问题直接参考。

变量

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

运算

老张走走。# 老张 += 1
老张走两步。# 老张 += 2
老张稍稍。# 老张 -= 1
老张稍三步。# 老张 -= 3
老张装老王加二。# 老张 = 老王 + 2
老张装(老张减三)除以五乘老王。# 老张 = (老张 - 3)/5*老王
老张装 老张齐整整地除以老王 # 老张 = (老张 / 老王),只留整数部分

比较

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

打印

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

条件

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

循环

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

组合

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

套路

【阶乘】(那啥)咋整:# 定义套路 阶乘,有一个参数 那啥。
  寻思:那啥比一小?# 需要自推吗?
  要行咧就 滚犊子吧 一。# 返回值1。
  要不行咧就 滚犊子吧 那啥乘整【阶乘】(那啥减一)。# 需要。返回自推结果。
整完了。# 定义结束。


唠唠:整【阶乘】(五)!# 使用套路

帮衬

翠花,上 math。# 导入 python math 模块。
唠唠:整 math.factorial(五)。# 整个 python 套路。

中文编程越走越嗨

该项目作者是 Google的高级软件工程师/技术主管,在谷歌工作了15年,他是 googletest测试框架和 googlemock的原作者。

哪种编程语言适合当母语,编程语言文言文

项目传送门:

https://github.com/zhanyong-wan/dongbei

更早之前,一项名为“wenyan-lang”的文言文编程语言项目备受瞩目,也被称为年度最骚编程语言。

哪种编程语言适合当母语,编程语言文言文

吾有一數。曰三。名之曰「甲」。
為是「甲」遍。
     吾有一言。曰「「問天地好在。」」。書之。
云云。

没看懂,编译成 JavaScript:

var n = 3;
for (var i = 0; i < n; i++) {
    console.log("問天地好在。");
}

运行:

問天地好在。
問天地好在。
問天地好在。

完全的中文编程有木有,使用古汉语语法,具有图灵完整性,可以编译成 JavaScript 或 Python。

如同古人篆书一般,一顿之乎者也,程序写好了!

文言文基础语法

技多不压身,赶紧学起来,第一章变量走起,中文编程肯定不能用 abc,还好我们有甲乙丙:

wenyan

JavaScript

吾有一數。曰三。名之曰「甲」。

var a = 3;

有數五十。名之曰「大衍」。

var dayan = 50;

吾有一言。曰「「噫吁戲」」。名之曰「乙」。

var b = "alas!";

true/false 我们也有对应的 陽/陰(繁体的阳/阴),类型就称为“爻”(卦符的基本符号):

wenyan

JavaScript

吾有一爻。曰陰。名之曰「丙」。

var c = false;

if 判断也没问题:

wenyan

JavaScript

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

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

循环更为简洁,直接声明次数,最后以云云结尾:

wenyan

JavaScript

為是百遍。⋯⋯ 云云。

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

恆為是。⋯⋯ 云云。

while (true) { ... }

乃止。

break;

加减乘除一应俱全,连逻辑运算符都支持:

wenyan

JavaScript

加一以二。乘其以三。

(1+2)*3

除十以三。所餘幾何。

10%3

減七百五十六以四百三十三。名之曰「甲」。

var a = 756-433;

夫「甲」「乙」中有陽乎。

`a

容器类型也支持,而且尊重汉语习惯,首个下标是从一开始:

wenyan

JavaScript

吾有一列。名之曰「甲」。充「甲」以四。以二。

var a = []; a.push(4, 2);

夫「寶劍」之長。

sword.length;

夫「甲」之一。

a[0]

夫「玫瑰」之「「名」」。

rose["name"]

下面是进阶语法了,定义一个函数 吾有一術:

wenyan

JavaScript

吾有一術。名之曰「吸星*法大**」。是術曰。⋯⋯是謂「吸星*法大**」之術也。

function f(){...}

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

function f(a,b,c,d,e,f){...}

吾有一術。名之曰「翻倍」。欲行是術。必先得一數。曰「甲」。乃行是術曰。乘「甲」以二。名之曰「乙」。乃得「乙」。是謂「翻倍」之術也。

function double(a){var b = a * 2; return b;}

施「翻倍」於「大衍」。

double(dayan);

吾有一數。曰五。書之。

console.log(5);

看完这些代码让我感觉:

《九章算术》就是一本算法导论;

《孙子兵法》就是一本安全攻防;

《易经》大概是一本二进制逆向吧...

这不禁让人想说:中文编程溜到起飞,但为什么现在的编程还是使用英文呢?

英语≠编程语言

由于程序设计语言本身就是一种语言,它只是碰巧借用了人类的语言。不以中文、英文或其他任何一种语言为基础,而是为了方便计算机和程序员之间的交流而使用的语言。

这套“符号系统”是为计算机硬件而设计的,是为开关电路而设计的;它定义了一系列类似数学符号的“关键字”,使程序员能够将所有事物的数学框架,如做数学题一样,表达给计算机;最后,通过“数字信息”到“位置”“颜色”“亮度”等事物的对应表,将计算出来的东西转化为人们能够理解的图形、文本、表格等形式。

哪种编程语言适合当母语,编程语言文言文

此外,最早的程序语言是数字0和1,以前的程序员写程序是在一个长纸带上打一个孔来表示0和1,后来发现0和1的二进制代码太麻烦,就把0和1压缩成16进制代码。

例如:数字10是用二进制表示的1010,用16进制表示的是0 A,这样表达更简洁,但输入计算机后还是要转换成二进制,计算机才能理解。

之后,科学家用简单的英文单词来表达某种功能。

例如,加法和减法分别用 add和 dec来表示,当程序员输入 add和 dec时,系统会将它们转换成相应的算法,这样就不断地给不同的代码段起名字。

这种不断从数字编码压缩中提升层次的编程语言,最终发展成今天各种各样的编程语言,例如:C、 C#、 C++、 HTML、 Java、 PHP和 Delphi等

哪种编程语言适合当母语,编程语言文言文

为什么不用中文编程

没有成熟的体系

尽管机器只有0和1那么简单,但是想用0和1来表达人们的想法,这套系统就很难建立起来,即便是现在已经开发了多年的编程语言,仍然有许多不合理之处。

因此,在目前还没有成熟的编程系统的情况下,中文编程语言的开发也会很困难。除非重新编写能使用中文编程的硬件。

耗费成本太大

如果想要使用中文编程,只能在原来的硬件上把中文编程转换为英文编程,然后再转换为机器语言,这样会增加消耗,提高延时。

上述两种方法,无论是哪一种,都是要颠覆整个 IT行业最基本的体系结构,所有汇编语言都要进行修改,这就相当于把世界翻了个底朝天。

编程思想才是核心

过多地纠结于使用哪种语言编程,其实都是初级程序员所关心的,编程真正的核心在于指导思想,在于对事物整体的逻辑抽象能力,在不同情况下,拿出最精确的解决方案。程序语言的不同仅仅是语法细节的不同,两者都是执行程序。

所以,许多老程序员,切入新的编程语言,只需一周时间,就可以直接切入项目开发,并不是说这个人有多聪明,根本原因是编程理念已经到位,而且新语言的语法并不是掌握了所有语法细节才能进入项目。基本看懂文法了,在做的过程中遇到不懂文法的细节再去查阅资料即可。

有经验的程序员并不纠结于特定的编程语言或编程语法。

对于说是用什么语言编程,用原则上说,谁方便谁快谁选。科学技术的发展与国界、地域并无多大直接关系。

同样大厂在校招看重的更多是

你自己本身的能力而不是技能

因为这个时代最缺的就是人才

学好编程思维的小哥哥小姐姐

都能拿到了相当不错的OFFER

↓ ↓ ↓

视频加载中...