On this page:
1.1 灵感来源
1.2 LISP的基本语法规则
1.3 LISP代码为何难以读懂
1.4 如何改进LISP的难读性
1.5 如何做
1.6 释惑
1.7 汉语字典索引
8.6

1 

1.1 灵感来源

纵观人类历史,很多有意义的成果往往都不是靠严谨的逻辑推理得来的,而是一时的灵感迸发,先有了结论,然后再去寻找现象去证明结论。

所以有些事情,你不用管他对错有无,感觉对了就要开干。

我大概在2015年的时候,开始使用Emacs编辑器。早之一两年学习Ruby语言的时候我就已经知道了LISP语言。大概从2018年开始,我才终于得以开始投入时间到Racket语言的学习上。

也是在2018年的时候,有次出差北京在和同事们的一次交谈中,我谈到说,自己曾经在维基百科上面看到过一些提及,说在一些学术研究的边缘领域中,有讨论用梵语来替代英语作为编程语言的宿主语言,原因是英语的词法规则不工整(动词时态变形,名词主谓宾等等的单词变形规则不够严谨),梵语是已知的最为严谨的语言,从语法词态构词规则等等的角度讲。

作为天生的中文使用者,但近代科学起源于西方,一二三次工业革命均发生在西方,编程语言亦起源于英语国家,这导致大量的一手文献资料都是英语写成的,工作和学习中不得不接触英文,这常常让我不禁的去思考中英文的语言差异。

我想或许,梵语之说显然是西方人局限于西方语言(德语、法语、西班牙语、意大利语都算是拉丁语的方言吧)的固有模式所做出的推演。而实际上,中文才是更值得尝试的宿主语言,特别是对LISP来说。

2021年夏,我的这个想法变得越发成熟。2022年夏,我着手了实现。

另可见我曾写过的文章:《由汉语编程所想到的》和《我的一种关于lisp方言式的汉语编程语言的构思》。

1.2 LISP的基本语法规则

相较于现今主流的编程语言,LISP的语法是极其简单的(称为S表达式):
  • 它首先由括号约定执行优先级;

  • 然后由每个括号中的第一个字词表示此括号内容的含义(称为前缀表达式)。

例如:1+1+1用S表达式写作(+ 1 1 1),又如:1+2-3用S表达式写作(- (+ 1 2) 3)

要理解S表达式,好有一个比喻:自然语言说的“我 爱 你”(主谓宾结构),如果采用S表达式说它的话是“(爱 我 你)”(谓主宾结构)。

1.3 LISP代码为何难以读懂

首先,“谓主宾”的排序方式是不符合大家所使用的的自然语言常见的“主谓宾”排序的,这造成了一部分的阅读障碍。

另外,就是因为括号所衍生出来的语法了:

因为S表达式是前缀表达,相当于把“谓词”前置了。但此时的“谓词”却仅仅只是一个简单的谓词,没有清楚明确的表明出“谓词”随后的数据和“谓词”之间的具体关系(谓词之后的数据将被怎样处理)。而这种关系(或者说将被如何处理)也却并不是单纯而统一的,而是根据这个“谓词”的不同而变化的(因其可以被定义和扩展)。而这种变化在无形当中会造成思维上的负担和混乱。

比如(+ 1 2 3)表达式的“谓词”是+,整个表达式的意思是"1加2再加3"
同样(if 1 2 3)表达式的“谓词”是if,但其意思却是"如果1是真,则返回2,否则返回3"

1.4 如何改进LISP的难读性

LISP诞生在上世纪五十年代,现今的编程语言相较之,舍弃了S表达式,引入了更多的关键字来替换括号,表达式也大都采用符合自然语言使用习惯的中缀表达。

但LISP的精髓之处就是他的S表达式,舍弃S表达式并不是我要追求的。

所以进而的去想,S表达式的“谓主宾”形式,其中最为重要的其实是“谓语”,一个表达式的关键含义,也均是由首位的“谓语”来阐述的。这个“谓语”能表达和涵盖的意思越多,也就越让人可以更容易的读懂整个表达式的含义。

比如你可以在这个“谓语”里指明“主”“宾”或者更加具体的位置单词的含义。理想情况下,比如这个“谓语”是一个图画,这个图画明确的表达出来了后面字符应如何组合表达,那么此时整个括号里面的内容就会变得异常的容易解读了。

而提到中文就不得不说,汉语的文字,本身就是由图画演变而来的,天然的在阅读和理解上比英文更加有优势。

另外是显而易见的,中文相较于英文,可以用更短的空间表达出更多有意义的含义。
It’s very obvious to notice that comparing to English, Chinese can use less space to express much more meaningful connotations.

据我调查思考,汉语在语法上更加自由,在语素的颗粒度上更加精细,在书写表达上更有上千年的实践和文化积淀(简练的文言文所淬炼出来的汉字含义,古诗词的工整对账所催生出来的同义词反义词,庞大的地区方言所延展出的在使用上的灵活性),另更有近代吸收西方文化后的白话文改革和简体中文、拼音、标点符号的引入。

上所述种种,更加使用人口之众,都让我认为,将LISP的语法寄宿在汉语下,将拥有强大表达力的中文融入在S表达式幽幽的括号中所产生的编程语言,会将人机交互带入另一层境界......

1.5 如何做

1.6 释惑

1.7 汉语字典索引