会员登录|免费注册|忘记密码|管理入口 返回主站||保存桌面
如果给你100万人
2024-11-19IP属地 湖北2

如果秦始皇再世,要修长城,皇帝派你去修,并给你100万人,你该怎么修

如果给你100万人

首先,你肯定想到了“并行处理”,即多人同时劳动。否则,会导致大量人员处于等待状态。 然后,你需要有张地图,规划一下线路,否则,许多段长城难以连接成一个。 之后,你需要有能工巧匠,这100万人都会在平地上砌墙,但不是都会在起伏的山顶砌墙。 最后,应该有交流,普通的墙和敌台的结构不同,让工人们进行交流,产生最好的方案。

言归正传,都21世纪了,我们不需要动员100万人修长城了。但是我们可不可以动员100万人制作一门计算机语言呢?假设可以,如果你认为不可以,就没必要阅读下文。

应该首先确定语言是什么样子的,然后再着手制作语言,就像上文中的地图一样。如何制作这么一张地图?可以参考字符集,最成功的字符集当属unicode,它包含了全世界几乎所有字符。 以句子为单位理解源代码,一方面,需要像unicode那样的,包含所有句子的集合;另一方面,需要编译原理支持。简单来说,就是新unicode和新编译原理。 unicode是一维的,从编码0到最大。而新unicode应该是四维的,分成(句子,方言,同位素,冗余项)。 如何在二维的电脑屏幕上展示四维的空间?有一个办法!首先展示两个维度,(句子,方言),就像电子表格一样,每一行表示一个句子,每一列表示一门方言。句子类似于 print “hello world” 显示 “世界你好” 而方言是包括汉语、英语、C语言、python在内的全部。

选择电子表格中的某个单元格,打开,又是一个电子表格,展示其余的两个维度,(同位素,冗余项)。每一行是一个同位素,每一列是一个冗余项。 同位素的概念来自于化学,指含义相似却又略有不同。如print语句加不加换行符,就是一个典型的同位素。 冗余项指的是意思完全相同的表述方式。如打印、显示; 以上这个四维的新unicode相当于地图,为我们修长城指明了方向。

你要动员100万工匠中的一部分人,研究新编译原理。因为要以句子为单位,按传统编译原理来说,就是每个句子都有对应的文法产生式。预计有100万个句子(因为unicode有100万个字符),那么,文法产生式的数量就能达到约200万条了。按照经典编译原理的LR(1)方法,分析表会异常大。 所以,需要研究新编译原理。

编译原理可以分为编译型、解释型、递进型、合作型和非产生式类型。 ① 编译型编译原理,即经典编译原理,它把所有文法产生式生成一个可执行文件。 ② 解释型编译原理,不产生可执行文件,而是看着文法产生式和源代码,进行分析的方法。 ③ 递进型编译原理,和经典编译原理很像,只不过它并非一次产生整个的DFA,就是LR(1)要用的那个DFA。它一次产生几个节点,有移进动作就产生新的节点;有规约动作就回退几个节点。这样做可以省内存,避免把200万个产生式一股脑地放进内存里。 ④ 合作型编译原理,把单词、运算符等看作有生命的智能体,通过一些规则,实现语法分析。 ⑤.1 非产生式类型的编译原理,按照“先乘除后加减”,“括号要配对”等规则进行语法分析。它摆脱了文法产生式,有点像给小学生上课。 ⑤.2 或者是基于集合论,从简单集合出发,运用集合间运算,组织出更大规模、直至语言规模的集合。集合有一个遍历函数,可以(仅是可能)列出一门语言的全部句子