4 命名规则
我曾在如何改进LISP的难读性中提到,中文化有利于LISP代码更易被读懂,原因是中文的单字表意特性会更利于构造命名。所以,名语言的关键字命名必须依托在一套工整的规则之上,如此才能实现我所谓的更易读。
4.1 组词规则
由字组词的规则如下:
规则 | 解释 | 示例 |
单字例程名且带有“亻”偏旁 | 表示例程入参和出参的数据类型相同(且数据内容也部分相同) | 佐、佑、攸 |
例程名字中包含“/入” | 表示例程的入参并非常规数据,而是一个函数例程或是匿名函数 | 佐/入、攸/入、消/入 |
例程名字中包含“/以” | 用于提示例程的入参数据类型 | 诗修!/以它段 |
例程名字中包含“/成”的 | 用于提示例程的输出结果是某一类型 | /成诗、/成词 |
原则上带有“亻”偏旁的例程名,是为暗示例程入参和出参的数据类型相同(且数据内容也部分相同)。此如:佐、佑、攸等。
凡是例程名字中包含/入的,均表示例程的入参并非常规数据,而是一个函数例程或是匿名函数(入)。此如:佐/入、攸/入、消/入等。
凡是例程名字中包含/以,均是在提示例程的入参数据类型。此如:消*/以表示其例程的参数是?;又如诗修!/以它段较诗修!而言,参数多出了三个(这三个分别为另外一个诗,和对另外一个诗取诗段的参数)。
凡是例程名字中包含/成的,均表示例程的输出结果是某一类型。比如/成表示此例程返回的结果是一个?;类似的还有/成诗(诗?)、/成词(词?)等等。
......
......
4.2 选造字规则
4.2.1 关键数据结构
英语单词(English Word) | 中文字符(Chinese Character) | 数据结构示例/(Showing) | 数据结构创建示例/(Constructor) |
pair | 双 | '(a . b) | (双 'a 'b) |
list | | '(a b c) | ( a b c) |
list | | '(a b . c) | ( a b c) |
circular-list | | '(a b c) | ( 'a 'b 'c) |
vector | | '(a b c) | ( 'a 'b 'c) |
---------- | --- | ---------------------------- | --------------------------------------- |
association list | | '((a . b) (c . d)) | ( 'a 'b 'c 'd) |
hash | | 'T((a . b) (c . d)) | ( 'a 'b 'c 'd) |
dict | | ||
---------- | --- | ---------------------------- | --------------------------------------- |
struct | | ||
class | |
4.2.2 造字规则
汉字的构造法才是汉语的精髓所在:汉字的构造,在其本质上是关于如何把现实世界间存在的多维度实物(以及实物间的关联关系)全都抽象化的体现在一个二维世界上的超级实践。
能熟练读或写中文的人,基本上都明白汉字的造字方法,我下面将举例说明如何在编程语言中引入这种造字法去表达编程中的固有概念:
首先我们知道LISP编程语言里有以下数据类型和数据操作函数:pair、cons、list、vector、association list、hash、length、string-length、vector-length:
pair在中文中我们可以用双来表示,这个汉字字符很容易让人理解pair是什么:类似'(1 . 2)这样成对的一组数据结构我们称之为“双”。我们使用(cons 1 2)来生成一个“双”。
list是另外一个数据结构,它是pair这种数据结构的衍生:用cons像(cons 1 (cons 2 (cons 3 '())))这样就会生成'(1 2 3)这样的list数据结构。
我们用(由半包围结构的又和㐅组成,)来表达list,这里半包围结构的又表示一个或多个的又(表示数据)组合在一块,㐅表示结尾为空。vector也是一种数据结构,它和list类似。如:'#(1 2 3 4)。
vector可以用汉字(由半包围结构的矢和㐅组成,左右半包围结构)来表示。association list是list这种数据结构的衍生数据结构:每个元素都是pair的list。如:'((1 . 2) (3 . 4) (5 . 6))。
association list用来表示。hash也是一种数据结构,它和association list类似。如:#hash((1 . 2) (3 . 4))。
hash可以用汉字来表示。struct是较以上各数据结构都更结构化的一种数据结构,我们用汉字缀表示之。
class是较struct更为抽象的一种数据结构,我们用汉字䄌表示之。
下面让我们把以上所讲内容汇总成表格,来观察一下编程语言的各个概念之间的关联关系是如何被用汉字造字法创造出来的字符所含蕴的:
如果我们把又看成是编程中数据的概念抽象的话,通过以上例子,我们就可以明白要如何用汉字的造字法来的表达LISP语言里面的固有概念。并且我们能看到,较之英文,汉字的表达是更能体现出概念之间的逻辑关系的。
另外值得注意的是,我们如果把汉字的这个字符创造法用在其他的编程语言上恐怕未必能达到以上这样的效果,这主要因为LISP编程语言的极简主义特色:把一些简单的概念层层堆叠以组建表达复杂的概念。
这个特色在我看来,和中国上古时期易经的“太极生两仪,两仪生四象,四象生八卦”,亦或是春秋战国时期道家老庄哲学的“道生一,一生二,二生三,三生万物”有异曲同工之妙。
然后再反观中国汉字的造字法,会感觉这三者好似都遵从了同一理念。