概述
公共命名空间是实现自然语言编程的必经之路。它可以理解为一张巨大的表格,其中收录了所有句子。
用unicode来做类比,unicode里边收录了所有字符,且它是一个一维空间,先填充字符集,再研究字体,于是,可以在电脑上显示字符;
然后说公共命名空间,其中收录了所有句子,且它是一个四维空间,先填充公共命名空间,再研究编译原理,于是,可以实现自然语言编程。
四维
公共命名空间的四个维度,分别是方言、句子、冗余项、同位素。
如何在二维的电脑屏幕上显示四维空间?先显示前两个维度,每一列是一种方言,包括C语言、Java、汉语、英语等都是方言。每一行是一个句子,经典的hello world程序应该放在同一行,不同方言中表示相同意思的句子,都应放在同一行。
在行和列的交叉点,是单元格。点开单元格,显示后两个维度。每一列是一个冗余项,“把[x]删除”、“将[x]删除”,这是典型的冗余项,它们的意思完全一样。每一行是一个同位素,print语句加不加换行符,是典型的同位素,它们有相似但却略微不同的意思。
可挂载同位素
同位素又分为可挂载的和不可挂载的,用四个点::
表示的是可挂载同位素,例如:
print("hello world")::{换行}
设想中,集成开发环境可以显示或隐藏可挂载同位素,这样看上去整齐一些。
求[2,4,6]的最小公倍数至[n]
求[2,4,6]的最小公倍数
最小公倍数
上述三行是不可挂载同位素,它们的含义相似,但行为略有不同。
可挂载同位素不仅可以挂载于句子后边,也可以形成区域挂载,例如:
a+b::{int64}
a+b::{大整数}
同位素挂载:大整数
c=a+b
d=a+c
结束同位素挂载
加法的句子有“大整数”这一可挂载同位素,在某个区域中,遇到可挂载的都要挂上。
名字
在后两个维度中,是冗余项和同位素,它们构成一个平面。这一平面凝聚之后,是前两个维度(方言、句子)所在平面中的一个单元格。这个单元格里显示什么?可以显示凝聚前的平面中的各个字符串中有代表性的那个字符串。
方言的名字怎么选?可以这样:
"/汉语/百度/老张的方言"
"/汉语/腾讯/老李的方言"
以上是两个字符串,也是两个方言的名字。方言可以构成树状结构,这依赖类似于路径的斜线来完成。
填充
填充公共命名空间,这还不够,还需要保持同步,即,具有相同意思的句子或同位素位于同一行。保持这一特性,可以实现语言的翻译和协作。翻译:把语言A的句子,通过查表,变成语言B的句子。协作:老张的方言中有句子1,老李的方言中有句子2,百度公司实现了句子1,腾讯公司实现了句子2,通过翻译,两个方言中都有句子1和句子2了。而x86、ARM等也是方言,所以,单元格里可以是字符串,也可以是二进制字节串。
如何保证公共命名空间的同步?如果两群人分别干起来,然后再合并,恐怕工作量较大。所以,应该是一个公司先创建一门方言,且这门方言是由公司内的多人的方言合并而来的。然后,其他人对公共命名空间进行扩充,在扩充的过程中,需保持同步才能获得更高的“浏览量”。例如,浏览公共命名空间的人,可以查看某一行,挂载到著名方言上的句子会被更多人浏览。
计算机语言有许多,它们没有统一,是因为修改语言的难度太大。有了公共命名空间之后,可以先讨论再实现。然后,语言体现出统一的趋势。但是,汉语和英语大概是无法统一的,但众多类似于英语的高级语言,有希望能统一。而汉语也有希望出现编程语言。
被诟病的中文编程
公共命名空间的目标是自然语言编程,当然也包括中文编程,中文编程是自然语言编程的一部分。但国内,中文编程并不被看好,主要指的是易语言。我估计,美国人看到C语言的感觉,和中国人看到易语言的感觉,是一样的。要不然,美国货一贯卖的很贵,偏偏计算机语言免费给我们用,必有蹊跷。
有人说:“我就认准了敲if比如果快”。
有了公共命名空间之后,敲if或敲如果,都行。
有人说:“未来的计算机语言将只有英语和汉语”。
有了公共命名空间之后,不只是英语和汉语。
新编译原理
公共命名空间需储存在数据库中,因为数量巨大。新编译原理需要查表,把源代码转化成目标语言。前文中说了,汉语是方言,C语言是方言,x86也是方言。汉语的句子,当成函数来理解,可以写成C语言形式,而C语言与机器语言之间的转换,可以由编译器自动完成。