中文编程语言新探之“〇”和“々”
近日,华为官宣将于不久之后推出全新编程语言。按照华为“不鸣则已、一鸣惊人”的个性,基于鸿蒙日益完善的生态,这款语言很有可能会以极快的速度取得成功。
编程语言众多,但长久以来,中国人在这一领域基本上处于缺位的状态。现在,这种局面很快就要被打破了,对中国程序员来说,这无疑是一件振奋人心的事情。
华为终端公司官微就发布新语言的消息发了一条微博,并询问网友有何期待。在网友评论中可以发现,期望支持中文编程的呼声很高。
笔者知道,华为新语言绝无可能支持中文编程(中文编程的含义很广,在这里的意思是“支持使用中文关键字或保留字进行编程”),但笔者对中文编程的未来信心十足,原因有以下几点(恕不详细说明):
- “胡虏无百年之运”,胡语将随着胡虏的衰弱而衰落
- 中国重新登顶已势不可挡,胡语在编程领域的独立王国不可能被人民群众长久容忍
- 中文编程的普及犹如九年义务教育的普及,将推动中国 ICT 行业真正进入自主自由创造创新的王国
- 笔者及众多中文编程倡导者的实践证明,中文编程可用、易用且好用
中国人开发的主流编程语言已计日可待,取代胡语编程的广受欢迎的中文编程语言还会远吗?
言归正传,下面将给大家介绍“〇”和“々”在中文编程语言中的妙用。
为什么要引入“〇”和“々”?
笔者从事编程语言中文化工作已有近三年时间。在开发过程中,笔者发现,字母语言的以下两个语法现象是中文所不具备的:
- 字母区分大小写,首字母大写的词汇可用来表示类等对象,全大写词汇可用来表示常量,而汉字基本上没有大小写之分
- 名词区分单复数,最常见的是单数名词加 s 变成复数名词,而中文名词基本上也没有单复数之分
这两个语法现象对编程语言具有十分重要的意义,因为编程语言是形式化语言,能从形式上区分不同概念是基本要求。为了在中文编程语言中实现类似的区分,笔者想了一些办法,比如:规定类名以“类”结尾,变量名前加“所有”或“诸”等表示复数,甚至想过加后缀 s 来表示复数。但是,这些办法要么不是形式化规则,要么不伦不类,一直不能令人满意。
幸运的是,“念念不忘、必有回响”,这两天笔者终于想到一个自认为完美的解决方案——引入不是符号但胜似符号的“〇”和“々”。
如何使用“〇”和“々”
这两个字都是标准汉字,完全可以用作标识符或标识符的一部分;与此同时,他们在外观上与符号无异,所以可以赋予其形式或语法上的特别意义。
“〇”的一个意义是“零”,在正式公文中表示年份时会用到这个字,比如“二〇二一”年。在编程语言中,可以利用它来模拟“首字母大写”的规则:
类 〇学员
函 __初始化__(自身, 姓名, 年龄):
自身.姓名 = 姓名
自身.年龄 = 年龄
函 自我介绍(自身):
打印("大家好,我叫" + 自身.姓名)
学员 = 〇学员("老吴", 66)
学员.自我介绍()
我们可以规定,带有“〇”前缀的标识符表示类或原型名等(能够派生实例的对象)。在中国人的观念里,〇(太极)生一,一生二,二生三,三生万物,这与它在编程语言里的意义也是相通的。
在笔者使用的搜狗输入法中,键入“ling”就能很方便地打出“〇”。在脑子里默念或在讨论时要读出这个字时,可以读作“ling”、“欧”(这是我脑子里的读法)、“圈”或不读出来。在 IDE 里,输入“〇”之后就会跳出当前作用域中的所有类名,这是不是很合乎我们的需要?
“々”原本是重复字符的替代字符,在前电脑时代的手写文本中经常出现,但现在的中文正式出版物中已不使用,不过日文的正式出版物中仍然使用。在编程语言里,我们借用它来表示复数概念可谓顺理成章:
老师々 = ['张三','李四', '王五']
老师 = 老师々[0]
这个字没有读音,要在当前的输入法中敲出来,也许不那么容易。比如在搜狗输入法中,需要键入“v1”,然后翻页,再键入“c”。不过,输入法一般都提供自定义字词输入功能。笔者自定义键入“fs”(复数的拼音首字母)时,输出来的第一个字符为“々”,所以也很方便。
最后,对于编程语言中的全局常量,笔者拟采用“常_xxxx”的形式来表示,例如:
# PATH = "D:/grasspy"
常_路径 = "D:/grasspy"
以上就是笔者对于中文编程语言的一些最新思索。有同道者,欢迎与我交流。