中文编程应该跳过词法
开始搞开发之前听说过易语言,尝试下载来装过,结果360报有病毒,……
关于中文编程,网上一直都有在讨论,也叫争论,争论的非常——尖锐,经常上升到不同寻常的高度,……
去年开始就在自学编译器原理,在这过程中偶然对中文编程产生了一点看法,针对有些比较理性的说法——中文编程不应该是这样的,我觉得有道理,就想把这点想法写下来。
下面我都用汉语代替中文,没什么,中国不止一种语言嘛。
编程语言语法
众所周知,C语言语法是这样的:
#include <stdio.h>
int main()
{
printf("Hello, World! \n");
int a = 1024;
int b = 666;
int c = a * b;
return 0;
}
参考《编译原理》,编译的前端过程,也就是解析的过程如下图所示:

编译时上面的代码保存为文本,就是.c文件,编译器读取.c文件时是按字符流读取,经过图中过程生产语法树,语法树下面截掉的部分忽略。
请注意前两个步骤,词法分析 → 语法分析 → <后面忽略……>,因为我在此就简单讨论一下这两个步骤而已。
词法分析的介绍,我还是截个编译原理的图:

上面的C语言代码经过这个步骤就变成了:
# → include → < → stdio.h → > → int → main → ( → ) → { → printf → (→ "Hello, World! \n"→ )→ ;→ (后面全部省略)
诺,这样的一个个lexeme的流,然后作为流输入给语法分析,语法分析就要处理各个lexeme的意义了。比如#后面的是“指令”include的时候,就表示要包含stdio.h进来。比如函数的定义……
语法分析比较复杂,就详见《编译原理》吧!
总结一下,先把字符流解析成lexeme流再给语法分析。
汉英文对比
显而易见的差别:
英语是由26个字母组成数不清的单词,然后这些单词和标点符号组成了语法结构。
比如:“I walk to the nearest shop.” 下图是自己整理的语法树,嘿嘿……

汉语呢,有数不清的汉字,每个汉字都是有意义的对吧!所以汉字对应的不是字母(实际上也对应不上),而是单词。所以汉语是由汉字直接组成了语法结构。
继续比如:“我走去最近的商店。” 也画个图:

【画图仅仅为了让文章看起来不单调(^-^)V】
对比的重点就是:英语比汉语多了一个词法解析的步骤!对吧!?
结论
计算机编程语言是美国人发明的,自然会采用英语编程;而且他们需要用打字机来输入程序源代码,自然而然的编程语言就跟英语一样,先入词法再语法。
中文编程,其实就是汉语编程嘛,应该就很明确了,没有词法分析,因为每个unicode都是一个字,不需要空格分割,直接进入语法分析阶段即可。
关键字都是一个字,各种命名都只需要一个字,比如变量名、函数名、类型名、文件名等等,当然最好还是带上各种符号,表达式还得上符号才好看。
一般的编程语言总共只有几十个关键字而已,汉字常用的就有四千多,目前已收录的据说有好几万个,用得完吗!
想象中的汉语编程
设想一个简单的,只支持函数和变量的语言:
1、定义函数
函卖羊():
量甲为整=羊价(),
量乙为整=500,
量钱为整=甲x乙,
我说(钱),
。
大概是这样的:
定义一个函数叫“卖羊”:
“量”就是定义一个类型是整数的变量“甲”,给他赋值为羊价,这里羊价()是读取羊的价格,
后面设置乙为500的整数,
然后计算总价,可以用英文字母x表示乘法运算符,
“我”是指当前程序嘛,“我”有个“说”函数,可以讲参数打印在屏幕上,
……简单设想而已,就当开个玩笑O(∩_∩)O~~而且我对这也没啥兴趣和精力去研究……
浙公网安备 33010602011771号