![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
公共命名空间
文章平均质量分 50
介绍公共命名空间和新编译原理。
知堂织韵
“公共命名空间”的作者,孤独的思考者。
展开
-
公共命名空间中的自定义函数
这种情况就像生产汽车和驾驶汽车的区别,程序员相当于生产汽车的工人,普通人相当于司机。当然,充当字典角色的正是公共命名空间,先填充公共命名空间,再实现计算机语言,不要轻易修改公共命名空间,给语言的使用者一本好用的、稳定的字典。在新的语言中,不能像传统语言那样,有“自”定义函数的功能,不能由程序员决定函数的名字,而是由“公共命名空间”来决定。其中中括号表示参数的位置,百分号表示“类型”,这是六个独立的命名空间的一部分,大于号表示这是一个输出变量。开发程序的过程会有些变化,先选择方言,再使用方言中的句子。原创 2024-07-31 12:13:25 · 294 阅读 · 0 评论 -
提问:中文编程的困境
设有句子 (循环n遍)-(循环体),当n是整数时可正常运行。但是,当变量名定义为“循环几遍”时,代入就成了(循环循环几遍遍),很啰嗦,怎么办?变量名为“循环次数1”、“循环次数2”,代入成为(循环循环次数1遍),(循环循环次数2遍),很容易被误认为1遍或2遍,而本意却不是这样。应该怎样解决呢?欢迎留言讨论。...原创 2020-03-11 08:05:40 · 192 阅读 · 2 评论 -
再论中文编程
强烈的希望用中文编程,这与民族热情无关。而是我认为,用母语编程应该成为潮流,外国人或许也希望能用英语编程。现有的编程语言,多数是类似于英语的,是类似而不是等于。几年前出于对类似于英文的编程语言的无奈,和民族热情,出现了易语言、习语言等中文编程语言。但是发展的都不太好,分析其原因,一是因为理论不行,在编译原理上没有突破,所以就被冠以“中文VB/汉化版C语言”的称号。二是因为实践不行,提供的库函数没有足够强大,导致败给了非国产的语言。其中易语言还和杀毒软件干上了,让人觉得惋惜。采用母语编程,即接近自然语言编程原创 2020-11-08 07:18:07 · 212 阅读 · 2 评论 -
关于 公共命名空间 的设想
电脑里有字符集,收录了所有符号。电脑里也可以有“公共命名空间”,收录所有的句子。在公共命名空间中进行讨论,源代码应该是什么样子的。而不是开发一个又一个计算机语言,对C语言的不满促生了C++,然后又出现了数不胜数的计算机语言。简单的一个hello world,竟然可以有几十种写法。这种现象,严重地降低了软件开发效率。所以,我们需要一个命名空间,它是公共的。①形式和原理的分离。也许从计算机原理上讲,应该先A后B,但是自然语言里就是先B后A。②通过讨论找到最好的写法。有这个需求,是从几十种hello wo原创 2021-03-29 18:55:36 · 131 阅读 · 0 评论 -
研究新编译原理
①记住所有句子。会编程的你可能已经知道该怎么编程了。②没那么简单,句子里可以包含数字,而数字是无限集合。也就是说,句子里可以包含集合。例如:显示数字{数字}。大括号里的数字表示数字集合。③如果记住所有句子,那么,每个句子都是一门微型语言。例如:print语言,专门研究与显示相关的功能,构成一门微型语言;re语言,正则表达式,专门处理文本的微型语言;m语言,算术表达式,专门处理数学运算的微型语言。④为什么强调微型语言,因为要集中兵力攻克难关。以前,有XX语言之父,但是XX语言们多是做重复劳动,应该想办法原创 2021-04-27 11:06:13 · 122 阅读 · 0 评论 -
公共命名空间和新编译原理
公共命名空间将发展成新汇编语言,这就需要新编译原理支持,才能实现自然语言编程。公共命名空间中储存着所有方言的所有句子,每一行是一个句子,每一列是一种方言。可以进行翻译,也就是同一行中的不同方言间的翻译。中文是一种方言,英文是一种方言,C语言是一种,java也是一种……以前面向百度编程时,搜索的关键词描述了我遇到的问题,搜索的结果多是一些技术博客、文章。如果在公共命名空间中搜索,输入的内容就从中文方言那一列里边找,找到之后再去找对应的列,即方言,比如C语言,我能得到用C语言实现的代码。为什么说公共命名空间原创 2021-05-05 16:41:25 · 125 阅读 · 0 评论 -
编译原理,内存管理和垃圾回收
把所有指针集中到一起,构成图结构,放在数组里。如何写链表呢?C语言实现的数据结构,习惯把next指针放在data旁边。要改变这一现状。先分配一块内存记录数据,再从图结构里添加一个节点。节点和内存块一一对应。怎样表示图结构?每个节点有3个成员,分别是 内存块的首地址、子节点、兄弟节点。空白节点构成一个链表,首地址=NULL,子节点当做next,兄弟节点待定。是否应该用C语言的共用体实现?节点保存在数组中,遍历时,从数组的第一个元素开始,a[0]是根节点,不能删除。所有空闲的堆内存在数组中都有对应的节点?这也原创 2021-05-05 17:09:14 · 226 阅读 · 0 评论 -
新编译原理包括哪些内容
①减少LR分析表的体积②把许多微型语言粘合在一起③在公共命名空间的基础上实现自然语言编程减少LR分析表的体积,因为预测这个表会变得很大,因为每个句型都是一门微型语言,所以产生式变得特别多,LR分析法的状态数也增长许多,这或许不是问题,因为电脑的运算能力也会提升。可是,一定会有人去研究这个课题的。并不像Perl/Python那样,把模块粘合在一起,新编译原理把许多微型语言粘合在一起。例如print语言、re语言、m语言、input语言、fs语言、web语言,等等。把语言粘合起来,还是个新想法。试想一下原创 2021-05-08 15:06:19 · 171 阅读 · 0 评论 -
正则表达式的七种类型
使用正则表达式处理文本,其实还可以有算术表达式,像正则表达式一样。他们的共同点是,先编译再执行。总的来说,有七种类型:①直接出结果②f()③f(str)④f(regex)⑤f(str,regex)⑥动态的,运行时编译⑦使用全局变量g,f()其中,①③⑤是常用的,④⑦是不常用的。对于①,直接出结果,它是"1+2*3"之类的算数表达式,在程序的编译阶段直接替换为7。对于②f(),它可以编译成无参数的函数,例如"rand ()"。对于③f(str),这是有变量做参数的情况,多数正则表达式是这原创 2021-05-08 18:49:45 · 1367 阅读 · 0 评论 -
新编译原理和集合论
1以句子为单位,理解源代码。使用集合论,一个句子对应多个字符串,储存在一个集合中。通过集合间的操作,精准地控制集合里边有哪些句子。集合论中的集合,对应文法产生式中的非终结符,但不同之处是,集合论对句子的操作更灵活。具体来说:分配[30]个[学生类]至[班]。ban=malloc(30*sizeof(Student));它可以翻译成如上的C语言语句。新编译原理将是一种翻译,从类似自然语言的源代码,翻译成现有的计算机语言的源代码。如何使用集合论?集合间的运算有“加、减、连接”,分别如下:A+B,即A原创 2021-11-26 17:05:08 · 301 阅读 · 0 评论 -
科幻,公共命名空间
1C语言的命名空间有点乱,C++有namespace,但也没好到哪去。他们共同的缺点是:没有公共命名空间。如果国家动员大家建设公共命名空间,那么人们会分为四个流派:简约派、完整派、中文派、反对派。举例来说:atoiConvertStringToInteger把字符串转换成整数……反对派用沉默抗议,或者写一些乱七八糟的东西,打乱刚刚建立起来的秩序。因为有反对派存在,所以,需要把不同人的劳动成果分离,不要把所有食物混在一个桶里!中文派也区分为简约中文派、完整中文派,这里边的完整中文派原创 2022-01-05 07:17:34 · 278 阅读 · 1 评论 -
程序名词化运动
1当伪代码和源代码组成的代码对,呈饱和状态时,可以直接用伪代码编程。这里所说的“饱和状态”是难以实现的,因为它要求代码库相当丰富。但是,当我们仅思考一个微型语言时,这种饱和状态又不是那么的遥不可及。能否从汇编语言开始,用一层层的伪代码支撑起软件产业?以此取代一个又一个编程语言,直接用自然语言编程。2在动词短语和名词短语之间,是集合。面向对象编程在一定程度上提供了集合的功能,例如,把多个函数放在一个类里,类和对象可以看作是集合。但我想要的集合不只于此,它应该能够支持集合间运算。例如,标识符的定义,原创 2022-01-26 03:09:10 · 146 阅读 · 1 评论 -
关于命名空间,它需要编译一下才好用
传统的编译错误指出在哪一行,对命名空间进行编译,指出哪几行出现冲突,例:namespace myns: from A import * from B import *报错:A和B都有open函数。解决:from A import *dim A.open as fopen这次不报错了,编译命名空间通过。using namespace myns这一功能用一行代码取代多行import。发展到后来,可以有using namespace std #c++ style或use原创 2022-01-31 03:36:19 · 563 阅读 · 0 评论 -
自然语言编程的尝试
班上有30个学生甲叫肖鹤云,乙叫李诗情显示甲、乙的名字这段代码明显不能运行,需要做一些修改。分配30个学生类至班甲为班[0],乙为班[1]甲的名字为肖鹤云,乙的名字为李诗情显示甲的名字,乙的名字进一步转化:学生类* 班=(学生类*)malloc(30*sizeof(学生类));学生类* 甲=&班[0], *乙=&班[1];甲->名字="肖鹤云",乙->名字="李诗情";printf("%s,%s\n",甲->名字,乙->名字);目标是自原创 2022-02-03 06:37:34 · 637 阅读 · 0 评论 -
把“公共命名空间”改名叫“代码矩阵”会不会好一点?
一个四维的代码矩阵,如何在二维的电脑屏幕上展示?首先展示前两个维度,按excel表格的形式呈现。选中一个单元格以后,再打开另一个excel表格,展示另两个维度。具体来说,前两个维度中,每一行表示一个句子,每一列表示一种方言。方言可以是C语言、Java语言,也可以是汉语、英语等。每一行表示一个句子,以句子为单位理解源代码。同一行、不同列的单元格,可以进行翻译。如:某一行,汉语方言那一列写着“求a的小数部分,至b”,同一行,python那一列写着“b=abs(a-int(a))”。通过代码矩阵进行翻译。原创 2022-02-07 07:08:00 · 77 阅读 · 0 评论 -
新编译原理之集合论
用集合论处理句子,一个句型是相关的一系列句子的集合,用集合中的典型句子给集合命名,用大括号表示集合。{有6个玩具猫}→有{自然数}个{类型名}上述内容有3个集合,可以对应到经典编译原理的3个非终结符。{自然数}集合需要编写一个小型的DFA。{类型名}集合可以记住常用的类型名。集合有一个“判定函数”,用于判定某句子是否属于该集合。判定函数可以是一个DFA,也可以是一个哈希表。{有6个玩具猫}集合的判定函数,是由前两个集合的判定函数组合而来的。因为它的定义正是由前两个集合组合而来的。...原创 2022-05-25 08:17:04 · 169 阅读 · 0 评论 -
如果给你100万人
如果秦始皇再世,要修长城,皇帝派你去修,并给你100万人,你该怎么修?首先,你肯定想到了“并行处理”,即多人同时劳动。否则,会导致大量人员处于等待状态。然后,你需要有张地图,规划一下线路,否则,许多段长城难以连接成一个。之后,你需要有能工巧匠,这100万人都会在平地上砌墙,但不是都会在起伏的山顶砌墙。最后,应该有交流,普通的墙和敌台的结构不同,让工人们进行交流,产生最好的方案。言归正传,都21世纪了,我们不需要动员100万人修长城了。但是我们可不可以动员100万人制作一门计算机语言呢?假设可以,如原创 2022-06-02 07:39:55 · 99 阅读 · 0 评论 -
计算机语言,分两步走
在电脑上显示字符,需要“分两步走”:字符集、字体。实现计算机语言,也要分两步走:①把所有句子放进一个命名空间中,相当于字符集。参考“公共命名空间”。②选择某个方言,把它实现,相当于字体。有可能需要研究“新编译原理”。现有的许多计算机语言,都是由一个语言之父、或少数几个人开发的。应该让所有人都参与进来,这正是构建公共命名空间的必要性。说中文的程序员约有700万人,而穷尽全人类的想象力,hello world程序的写法也才几百种。语言有趋同的特性,会呈现出饱和,不会是700万人有700万种写法。让程原创 2022-10-11 18:44:13 · 191 阅读 · 0 评论 -
公共命名空间和office文档
如果有一天,“公共命名空间”建设完毕了,那么,其中一定包含了全部的句子。既然是全部的句子,就一定包含编辑office文档的全部句子。这样一来,它能不能代替office,成为新的行业标准呢?需要引入“新的转义符号”,定义如下:反斜线加一个字符,或是反斜线加小括号。\n\(new line)一个office文档,很可能是这样:\(文档开始)\(第一行,标题1)公共命名空间和office文档\(正文,缩二)公共命名空间中包含了全部的句子,它是一个表格,可以通过查表来进行翻译。\(文档结束)原创 2022-10-19 22:05:19 · 575 阅读 · 0 评论 -
自动内存管理(gc),新的思路
自动内存管理可分为静态管理和动态管理,编译原理书上说的是动态管理,即运行时的自动垃圾回收(gc)。作者认为垃圾这个词不雅,就换用了“自动内存管理”。静态管理的关键是,在编译阶段自动添加free函数。静态管理能处理多数情况,少数不能处理的情况,交给动态管理,即运行时自动垃圾回收(gc)处理。程序结构分为顺序、分支、循环。分别讨论。1、顺序结构在顺序结构的程序中,从p=malloc到use§画出生命线,如果有q=p,也要画出到use(q)的生命线。p=malloc(100)q=puse(p)//原创 2022-10-22 13:32:53 · 583 阅读 · 0 评论 -
公共命名空间和unicode
公共命名空间和unicode,它们两个有关联,在电脑上显示字符,要分两步走:字符集和字体。在互联网诞生之前,各国都是使用自己的字符集,后来,出现了unicode,这是包含所有字符的字符集。不管是unicode还是gb2312,它们都是字符集,没有字符集,电脑似乎就无法显示字符了?在学习计算机底层原理时,老师讲:“不要被二进制吓到,二进制可以转换成十进制,也可以通过字符集和指令集,转化为文本和程序。”没有指令集,电脑显然不能工作,那么,没有字符集,电脑也不能工作。字符集和指令集都是集合,它提供了符号、指令原创 2022-10-23 11:22:38 · 351 阅读 · 0 评论 -
为什么计算机语言很重要
计算机语言涵盖方方面面,要强大IT业,必须发展计算机语言。文本界面和图形界面一开始,计算机的界面是文本界面,后来有了图形界面。看上去图形界面比文本界面好用,但实际不一定。随着软件规模扩大,工具栏上的按钮越来越多,看着眼花缭乱。如果软件规模进一步扩大,图形界面不一定是最好的选择。最开始的文本界面,是对话式的。科学家幻想着能和电脑对话,但这个目标十分遥远,才让图形界面占了上风。在未来,因为自然语言理解、语音识别的进步,用语音操作电脑将变得流行。届时,文本界面将会回归。酷我音乐app有一个“睡眠定时”功能原创 2022-10-23 21:41:50 · 793 阅读 · 0 评论 -
编译原理,根据文法产生式,生成语言的全部句子
gz里边是文法产生式。这里用的是《编译原理》虎书中的文法3-1。将fc执行多遍,可以得到更长的句子。原创 2023-12-10 07:57:37 · 447 阅读 · 0 评论 -
C+语言的新特性
C+语言是一门想象中的语言,它是实现“公共命名空间”的过渡语言。以上特性,除了自动添加free外,都较容易实现。不要添加过多的特性,避免变得像C++那样过于复杂。更多关于计算机语言的期望,留给公共命名空间。原创 2024-01-06 08:55:44 · 903 阅读 · 0 评论 -
公共命名空间的表示方法
曾经有人研究如何在电脑上显示汉字,研究的结果是:把汉字全记下来,需要哪个就显示哪个。具体来讲分两步走:①建立字符集②设计字体为了实现,也需要分两步走:①把所有句子收集起来②编程实现这些句子这两步分别对应于「公共命名空间」和「新编译原理」,本文着重讲解公共命名空间。可能有人觉得收集所有句子的工作量太大,但实现人工智能需要的劳动量不比这小。公共命名空间是一个四维空间,四个维度分别是:方言、句子、冗余项、同位素。原创 2024-01-15 12:04:55 · 443 阅读 · 0 评论 -
填充公共命名空间的例子
公共命名空间是一项全新的技术,它用于确定计算机语言是什么样子的,它是由全世界的程序员共同填充的,每个人都可以创建自己的方言,并且把对计算机语言的设想记录在公共命名空间之中。原创 2024-04-28 02:53:24 · 316 阅读 · 0 评论 -
公共命名空间和RHP
公共命名空间是一张巨大的表格,由计算机语言的使用者来填充,并把对计算机语言的期望,写在里边。计算机语言的制作者,负责阅读公共命名空间,并制作计算机语言。RHP是“帮我编程序的小机器人”,它必然存在!C语言的宏、C++的模板,都可以看作是这类机器人的简化版本。在没有RHP的那些年,程序员要处理许多琐碎的事务,这些事务应该由RHP替程序员自动完成。原创 2024-05-15 20:35:29 · 348 阅读 · 0 评论 -
编译原理:代替LR分析法的MP分析法
LR分析法存在一个问题:当文法产生式变多,分析表变大之后,占用很多内存。为了接近自然语言编程,需要大量的文法产生式,有可能分析表过大,内存里放不下。词法分析返回的不是经典《编译原理》中所说的符号串,而是简单的树。所以,词法分析也可以看作是一遍,和语法分析的“多遍”没有本质区别。其中,括号配对用数数的方式完成,这需要编写专门的函数。而文法产生式,可以看作是格式化的函数。词法分析和语法分析仍然是分开的,语法分析按照“先乘除后加减”,分成多遍,即MP。MP分析法,是multi-pass(多遍分析法)。原创 2024-06-03 18:24:18 · 463 阅读 · 1 评论 -
公共命名空间和任务矩阵
公共命名空间中的每一行是一个句子,每一列是一种方言。例如:不同语言的hello world程序位于同一行,而不同的列可以是C语言、Java语言、汉语、英语等。分“两步走”方案说的是:类似于在电脑上显示字符,需要分为字符集和字体这两步。在电脑上实现计算机语言,需要先建立句子的集合,即公共命名空间,再想办法实现它。本文所说的“任务矩阵”是第二步的一部分。具体步骤做一个电子表格,A列写下一个个任务,B列是员工对各个任务的把握。从0到100,描述从完全不懂到有把握完成。每个员工都填写这个表格,汇总到管理员,他原创 2022-11-08 11:26:52 · 331 阅读 · 1 评论 -
曾经我们想要的中文编程
曾经我们想要的中文编程,并不是简单的翻译,而是自然语言编程。这是自然语言理解、机器编程两部分的组合。这需要完成两个人工智能项目。很难。...原创 2019-03-06 18:51:57 · 638 阅读 · 0 评论 -
公共命名空间中的依赖关系
需求分析公共命名空间中包括大量的句子,句子之间有依赖关系。例如,许多操作都需要用到字符串,则字符串操作是基础的。根据分“两步走”的计划,先在公共命名空间中确定语言是什么样子的,再想办法实现计算机语言。这两步和字符集+字体的划分,如出一辙。依赖关系的分析是第二步的开始。一个句子作为一个节点,依赖关系的分析的目标,不是画出关系图,而是给它们排队,从复杂的图变成简单的线。理论首先说表示方式:a->b表示先实现a再实现b,或者说b依赖a。节点间关系分为:顺序、分支、循环、合并。顺序:a->b原创 2022-11-06 12:12:33 · 225 阅读 · 0 评论 -
公共命名空间和输入法
美国的程序员没有输入法,他们发明了许多简写。中国的程序员敲zdgys得到最大公约数,进而得到一个模板:求[ ]和[ ]的最大公约数至[ ]填充这个模板,得到源代码。公共命名空间中包含了所有句子,它尽量使用全称,以求准确。但这就带来一个问题,敲击键盘的次数明显增加了,所以,需要输入法。用o代替中括号,上述模板的全称是:qohodzdgyszo这一串还是太长了,程序员输入zdgys就能找到它。有人希望更简单一些,输入gys(公约数)就能找到。但是,还有“广度优先搜索”,gdyxss。美国的程原创 2022-11-27 03:47:20 · 589 阅读 · 0 评论 -
公共命名空间简述,实现自然语言编程的必经之路
公共命名空间的想法出现自2019年,到现在有三年了。在2022年底,总结一下这三年来的想法。就像字符集+字体,公共命名空间+新编译原理也是这么一对儿。字符集用来收集所有符号,字体用来显示字符集中的符号;公共命名空间用来收集所有的句子,新编译原理用来实现这些句子。公共命名空间是一个四维空间,四个维度分别是:句子、方言、同位素、冗余项(rǒng)。为了在二维的电脑屏幕上呈现四维空间,先呈现前两个维度。每一行是一个句子,每一列是一个方言。在行与列交叉处是单元格,点开单元格,是另一个二维表:每一行是一个同位素原创 2022-12-14 08:12:50 · 344 阅读 · 1 评论 -
新编译原理的草稿
经典编译原理似乎已经够用了,为什么要研究新编译原理呢?在四型文法中,只实现了前两型,现在用的编译原理,仍然是“上下文无关文法”。沿着文法产生式替换的思路走下去,很艰难,不如另辟蹊径,于是就有了新编译原理。经典编译原理的词法分析阶段,识别出关键词,且关键词只能是关键词,不能是别的。随着语言规模扩大,需要识别的关键词越来越多,恐怕会占用太多的命名空间?在新编译原理中,词法分析阶段仅处理:字符串、转义符、逗号、括号、换行,这五个。经典编译原理的语法分析阶段,执行先乘除后加减的优先级策略。这可以成功地分析算数表原创 2022-12-07 03:10:59 · 224 阅读 · 0 评论 -
我的编译原理
以下是我对编译原理的理解,和课本上的不同。如果你要考试,请不要阅读本文。如果你想开发一个编译器,请一定阅读本文。词法分析词法分析的任务,是识别字符串、转义符、换行符、缩进。采用Python风格的缩进。引入扩展的转义符。for a, b in x print a print b\n\(new line)在词法分析阶段就使用树状结构。如果分析出100个词法符号,就创建一棵1个根节点、100个子节点的扁平的树。这么设计是为了与后边的语法分析接轨。通过对词法分析树的剪切、拼接,构建原创 2022-11-16 06:31:49 · 109 阅读 · 0 评论 -
公共命名空间和上下文
公共命名空间中包含了所有句子,尝试接近自然语言编程。有这样一段程序:获取整数[n][i]从[1]到[n]循环:显示[i]第一行“申请”一个变量n,第二行构建一个迭代器,第三行使用i。需要有一个存放变量的地方,这个地方可以跨越行与行的界限,暂且叫它上下文吧。重新解释:第一行向上下文提交一个变量n,第二行使用n,并且继续向上下文提交变量i,第三行使用i。上下文中的数据类型是多样的。更多解释:获取整数[n]中的n是一个“输出型变量”。[i]从[1]到[n]中的i是一个迭代器?下面这段程序很原创 2022-11-09 18:30:07 · 74 阅读 · 0 评论 -
编译原理:代替LR的MP:2.遇到的问题
MP分析法可以代替LR分析法,并且还能有所超越。这是一个有希望的研究方向。发明LR分析法的Knuth先生还健在,它看到MP分析法之后,会怎么想呢?原创 2024-06-17 10:26:22 · 305 阅读 · 2 评论