中文编程应该跳过词法

开始搞开发之前听说过易语言,尝试下载来装过,结果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>intmain(){ → 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~~而且我对这也没啥兴趣和精力去研究……

posted on 2024-11-02 16:54  客串一回  阅读(33)  评论(0)    收藏  举报