公共命名空间简述
制作计算机语言分两步走:填充公共命名空间、研究新编译原理。其中,公共命名空间用于确定语言是什么样子的,新编译原理用于实现语言。
简单来说,公共命名空间包括所有方言的所有句子。C语言、Java语言是方言,汉语、英语也是方言。不同方言的hello world程序,应该位于表格的同一行,而不同的列表示不同的方言。
把汉语和英语也视为方言,是为了接近自然语言编程。同时,也是为了提供一个对计算机语言进行说明的地方。例如:汉语方言A用于编程,汉语方言B用汉语解释每一行的句子都是什么功能。
每个人都能创建方言。由于公共命名空间仅负责确定语言是什么样子的,并不实现语言,所以,语言的使用者可以在这里畅所欲言,把自己对计算机语言的设想说出来,交给语言的制作者去衡量,并实现。
以下是一些填充公共命名空间的例子。
例1
字符串采用Python格式,由单引号、双引号、三个单引号、三个双引号标识。并且,在raw-string和f-string的基础上,再添加t-string, c-string, n-string。
name='zhao'
f'My name is {name}.'
r-string(raw-string)用于路径或正则表达式:
r'd:\text\1.txt'
r'\d{4,7}'
t-string(text-string)用于从文本文件中读入,它的字面值是一个路径,所以,也是r-string。
a=t'd:\text\1.txt'
执行后,a的值等于1.txt的内容。
c-string(cmd-string),启动一串命令行。
result=c'ls -l'
执行ls命令,并获取执行的结果。
在Perl语言中,用的是反单引号,
`dir`
n-string(note-string),就是注释,被编译器忽略的部分。单行注释可以用井号,多行注释就用n-string。
n'''这是一组
多行注释
有许多行组成。'''
例2
同位素用反斜线加小括号表示。同位素的概念取自化学中的元素周期表,互为同位素的语句,具有相似的功能,但却略有不同。print语句加不加换行就是一对儿典型的同位素。表示如下:
print('hello')\(换行)
print('hello')\(不换行)
使用专用的源代码浏览器,它可以显示或隐藏同位素。可以预见,公共命名空间中的句子都比较长,算上同位素以后就更长了,隐藏功能就成了必须的。
例3
上下文容器,有如下代码:
[4]位随机数
打印
若没有上下文容器,只能写成这样:
[4]位随机数至[x]
打印[x]
有了上下文容器之后,句子更简单,更接近自然语言了。
例4
[4]位随机数,不以零开头
[4]位随机数\(不以零开头)
生成1000到9999的随机数,不以零开头。
可以把同位素写出来,也可以放在反斜线后边。
放在反斜线后边的内容,会在源代码浏览器设置为“隐藏同位素”时隐藏,写出来的则不隐藏,它们功能相同。
例5
重复,直至按['q']退出:
生成随机数至[x]
打印[x],每行[5]个
上述所有[x],添加进空列表[y]
程序员需要一个“帮我编程序的小机器人”,来处理各种琐碎的任务。如上面这个例子就是,有一些编程的套路,可以自动实现。
程序员和机器人一起,把源代码转换成目标代码。
例6
"hello, \(name.upper)"
字符串内插,用反斜线加小括号来表达。小括号里可以使用微型语言,处理简单的任务。
总结
公共命名空间是一项全新的技术,它用于确定计算机语言是什么样子的,它是由全世界的程序员共同填充的,每个人都可以创建自己的方言,并且把对计算机语言的设想记录在公共命名空间之中。